函数参数

函数参数

函数

def foo(x:int, y:int) -> int:
    pass
"""
这样呢可以展示函数参数的类型,
"""

定义函数

(1): 有参函数
(2): 无参函数
(3): 占位函数

调用函数

(1): 加括号直接调用
(2):  可以当作变量
(3):  可以当作返回值

函数参数

"""
形参: 函数定义阶段的参数
    位置形参:从左到右,必须传值,缺一不可
    默认形参:最好是不可变类型,如果实在要来一个可变类型,那就在函数内部转型。
             可以和位置形参混合使用,位置要在前。
             传参的时候可传可不穿
    可变长形参:*会将溢出的 <<位置实参>> 全部拿来汇总成元组。
               **会将溢出的 <<关键字实参>> 全部拿来汇总成字典。
实参: 函数调用阶段的参数
     位置实参:跟位置形参一一对应
     关键字实参:传够值就行,顺序可以打乱。
     关键字实参和位置实参混用的时候:位置实参必须在关键字实参前面。
     可变长实参:* 可以是元组,列表,被for循环便利的,把这个打散,按照位置实参传给函数的位置形参
               ** 只能是字典,一个*代表字典的k值传给函数的形参,**代表字典打散,按照关键字传参的方式传给函数的关                    键字形参,这里的字典的k要和函数位置形参保持一致。
"""
#位置传参
def foo(x,y,z):
    print(x, y, z)

foo(1,2,3)
foo(x=1,y=2,z=3)
foo(z=3,x=1,y=2)

#关键字传参
def foo(x, y, z=1):
    print(x,y,z)

foo(1,2)
foo(1,2,3)
foo(1,2,z=3)

#默认形参的骚操作
def foo(name,hobby,hobbies = None):
    if hobbies == None:
        hobbies = []
    hobbies.append(hobby)
    print(f'{name}的爱好是{hobbies}')
# 因为默认形参最好是不可变类型,而这里的hobbies要是一个列表,后面传参的时候,不能总传空列表,所以这里这样处理,先给hobbies给一个默认值,如果为None则,让hobbies等于一个空列表
foo('egon', 'read')
foo('jason', 'DBJ')
"""===================================================================================="""
m = 200                 # m指向200这个值对的内存地址
def foo(x, y=m):        # 把200这个内存地址绑定给y
    print(x,y)
m =1                    # 把1的内存地址重新绑定给m
foo(1)
"""====================================================================================="""
m = [1,2,3]          # m指向这个列表的内存地址
def foo(x, y= m):    # 把m指向的内存地址绑定给y
    print(x,y)

m.append(4)          # m这个内存地址调用append
foo(1)

# 可变长参数
>>> def foo(x,*args):
...     print(x,args)
...
>>> foo(1,2,3,4,5)
1 (2, 3, 4, 5)
'''====================================================================='''
>>> def foo(x, **kwargs):
...     print(x,kwargs)
...
>>> foo(1,a=111,b=222,c=333)
1 {'a': 111, 'b': 222, 'c': 333}

>>> def foo(x,y,z):
...     print(x,y,z)
...
>>> foo(*[1,2,3])
1 2 3
>>> foo(**{'a':111,'b':222,'c':333})     # 这里传值一定要和函数形参对应起来
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: foo() got an unexpected keyword argument 'a'
>>> foo(**{'x':111,'y':222,'z':333})
111 222 333

# 可变长参数的一个应用:
def index(a,b,c):
    print(a,b,c)

# 这里后面的装饰器用的就是这种方法,吃什么吐什么
def wrapper(*args, **kwargs):   # args=(1,2,3),kwargs={"a":111,"b":222,"c":333}
    index(*args, **kwargs)      # index(*(1,2,3),**{"a":111,"b":222,"c":333})
                                # index(1,2,3,a=111,b=222,c=333)

# wrapper(1,2,3,a=111,b=222,c=333)


内置函数:

绝对值:
>>> abs(-111)
111
all:
>>> all([True, 'abc', '', 0])
False
>>> all([True, 'abc', '1'])
True
>>> all([])
True
any:
>>> any([True, 'abc', '',0])
True
>>> any([])
False
>>> any([True, 'abc', '1'])
True
>>> bin(10)
'0b1010'
>>> oct(10)
'0o12'
>>> hex(10)
'0xa'
>>>
callable:
>>> callable(len)
True
>>> x = 10
>>> callable(x)
False
ASCII码:
>>> chr(65)
'A'
>>> ord('a')
97
divmod:
>>> divmod(10,3)
(3, 1)
>>> pow(10,2,3)
1
>>>
eval:
>>> string = "print('hello')"
>>> eval(string)
hello
posted @ 2021-06-29 16:06  剧终cur  阅读(79)  评论(0)    收藏  举报