建一个收费网站 怎么收费,做网站主要步骤,北京制作公司网站,西安seo网站建设Python之函数-可变形参
可变参数
可变位置参数 在形参前使用 * 表示该形参是可变位置参数#xff0c;可以接受多个实参 它将收集来的实参组织到一个tuple中 可变关键字参数 在形参前使用 ** 表示该形参是可变关键字参数#xff0c;可以接受多个关键字参数它将收集来的实参的…Python之函数-可变形参
可变参数
可变位置参数 在形参前使用 * 表示该形参是可变位置参数可以接受多个实参 它将收集来的实参组织到一个tuple中 可变关键字参数 在形参前使用 ** 表示该形参是可变关键字参数可以接受多个关键字参数它将收集来的实参的名称和值组织到一个dict中
总结:
有可变位置参数和可变关键字参数可变位置参数在形参前使用一个星号*可变关键字参数在形参前使用两个星号**可变位置参数和可变关键字参数都可以收集若干个实参可变位置参数收集形成一个tuple可变 关键字参数收集形成一个dict混合使用参数的时候普通参数需要放到参数列表前面可变参数要放到参数列表的后面可变位 置参数需要在可变关键字参数之前 形参
可以有缺省值定义时如果没有提供该参数动用缺省值. 缺省值的定义往后放5种 普通形参可以有缺省值2种传实参方式都可以用 *args 可变仅位置形参只能接收按照位置传入的实参可以接收0个或任意个没有缺省值 **kwargs 可变仅关键字形参只能接收关键字传入的实参可以接收0个或任意个. 形参的最后一个 没有缺省值
普通形参
def add(x, y5):print(x, y)return x yadd(1), add(7, y5), add(x9), add(x4, y0), add(y8, x9)# 返回结果1 5
# 返回结果7 5
# 返回结果9 5
# 返回结果4 0
# 返回结果9 8
# 返回结果(6, 12, 14, 4, 17)add(), add(y7), add(y6, 7)# x位置参数必须传参
# 报错内容SyntaxError: positional argument follows keyword argumentdef add(x4, y):print(x, y)# 缺省值的定义往后放否则就会报错
# 报错内容SyntaxError: non-default argument follows default argument*args 可变仅位置形参
def add(*nums):print(type(nums),nums)# 定义函数add形参是*numstype查看类型add, add(1), add(1, 2), add(1, 2, [1])# add查看函数签名add()中写入形参返回类型是元组
# 返回结果class tuple (1,)
# 返回结果class tuple (1, 2)
# 返回结果class tuple (1, 2, [1])
# 返回结果(function __main__.add(*nums), None, None, None)def add(*nums):print(type(nums), nums)s 0for i in nums:s ireturn s# 求和运算add(1, 3, 5)# 执行函数add传入形参1 3 5
# 返回结果class tuple (1, 3, 5)
# 返回结果9add(range(5))# nums (range(0, 5)) range对象是惰性的没有调用的时候只是一个展现形式
# 报错内容TypeError: unsupported operand type(s) for : int and rangeadd(nums[1, 3, 5])# 不认关键字传参只认位置传参
# 报错内容TypeError: unsupported operand type(s) for : int and range**kwargs 可变仅关键字形参
def add(**kwargs):print(type(kwargs), kwargs)# 可变仅关键字形参的函数add(x1, y4)# 只能传递关键字参数返回类型是dict字典
# 返回结果class dict {x: 1, y: 4}add(1)# 翻译你给了1个位置参数我不接受位置参数
# 报错内容TypeError: add() takes 0 positional arguments but 1 was givendef add(**kwargs):print(type(kwargs), kwargs)for k,v in kwargs.items():print(k, v)# 定义add函数形参是**kwargs 可变仅关键字形参先打印类型和kwargs的内容循环取kv的值在进行打印add(x1, y4)# 返回结果class dict {x: 1, y: 4}
# 返回结果x 1
# 返回结果y 4混合使用
def config(host, port, **kwargs):print(host)print(port)print(kwargs)# 定义一个config函数config(localhost, 3306)# 调用config函数指定形参按位置传参**kwargs没有传入参数所以返回空字典。
# 返回结果localhost
# 返回结果3306
# 返回结果{}config(localhost, 3306, usernameRunaway)# **kwargs传入参数usernameRunaway字典形式返回这么做为了指定用户名
# 返回结果localhost
# 返回结果3306
# 返回结果{username: Runaway}config(localhost, 3306, dbcmdb)# **kwargs传入参数dbcmdb字典形式返回这么做为了指定需要连接的数据库
# 返回结果localhost
# 返回结果3306
# 返回结果{db: cmdb}def config(host, port, *args, **kwargs):print(host, port, args, kwargs)# 重新定义config函数config(1, 2, 3, 4, 5)# 调用函数config
# 为什么字典是空的因为1,2按位置给了host和port3,4,5都被*args收入元组了
# 返回结果1 2 (3, 4, 5) {}config(1, 2, x1, y2)# 调用函数config
# 为什么元组是空的因为1,2按位置给了host和portx和y匹配不上关键字所以被**kwargs收入字典了
# 返回结果1 2 () {x: 1, y: 2}