函数的调用方式和参数
def func(x,y):
.....
func(19,20) # 直接调用
new=func(19,30) # 表达式调用
def delete(a,b):
return func(a,b) #作为返回值调用
函数的参数
-
按功能分和位置分
- 形参def func(x,y)这里的:x,y
- 需要在函数调用时传递进去
- 只在函数内部生效
- 实参func(8,9) 这里的:8,9
- 调用函数时放进去的实际值
- 可以按位置或关键字传递
- 可以使表达式,常量,变量
- 形参def func(x,y)这里的:x,y
-
按位置传参情况
- 有位置,不传参数,报错
- 没有位置,多传参数,报错
- 位置参数必须按位置传递值,换位置就会导致函数内的参数错位
-
按关键字传参情况
-
关键字传递参数时,要指定函数定义时的位置参数
-
允许按位置传递参数
-
允许不按位置传递
-
可以混合用,混用时位置参数必须放关键字前面
-
默认参数可以不给值,不传值就是默认值,传值就用传递的值,必须放在最后
-
顺序:
-
位置参数>关键字参数>默认参数
-
可变长位置参数
-
定义:*args
-
作用:解决多传位置参数问题
-
可以用一个变量解决超出指定参数个数的参数,
-
用元组接收
-
放在默认参数后面
-
关键字是*
-
*是解包语法
-
print(*'dream') 输出: d r e a m
-
-
def func(x,y,z='',*args)
可变长关键字参数
- **kwargs
- 接收多余的关键字传参
- 放在*arg后面
- 返回字典
- 字典可以用*解包,得到所有key
- 字典不能用**解包
命名关键字参数
-
def fun(x,y,z='',*,a,b)
-
*前参数可以使用位置传参或者关键字传参,但是 **之后的参数必须按照关键字传递
-
*后面的参数,默认参数允许放在位置参数之前
-
不能跟*args,或者**kwargs 连用
混合使用
- 顺序
- 位置>默认>*args>**kwargs
类型提示
-
optional 语法
-
注解:定义函数时指定参数类型
-
基本数据类型注解:在形参后(:类型)
-
不可变:是一种弱类型约束,是建议,不强制
- 字符串def fun(name:str)
- 数字 def fun(name:int)
-
可变from typing import Dict,List,Tuple,Set
-
列表
-
字典
-
from typing import Dict def func(x:Dict[str,int]) x是个字典参数,期待键是str,值是int
-
-
元组
-
集合
-
-
约束函数返回值类型
-
def func(x,y)-->int #约定返回值为int类型 return
-
from typint import Uion def func(x,y)-->Uion[int,str ]#约定返回值为int类型或者str return
-
#返回可选参数类型 from typing import Optional def func(x,y)->Optional[int]
-