函数参数
函数参数
函数
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 |
浙公网安备 33010602011771号