标签:cal 编程 重复 一段 com 素数 调用 可变 span
def 函数名(参数列表):
函数体(代码块)
[return 返回值]
调用:
举例:
#定义函数 def add(x,y): result = x + y return result #调用函数 out = add(4,5) print(out)
参数调用时传入的参数要和定义的个数相匹配(可变参数例外)
参数默认值(缺省值)
def add(x=4,y=5): result = x + y return result
调用测试
add(6, 10),add(6, y=7),add(x=5),add(),add(y=7),add(x=5, y=6),add(y=5, x=6)#add(x=5,6),add(y=8,4)要求位置参数必须在关键字参数之前传入
作用:
举例:
def login(host=‘127.0.0.1‘,port=‘8080‘,username=‘jaxzhai‘,password=‘123‘): print(‘{}:{}@{}/{}‘.format(host,port,username,password)) login() login(‘127.0.0.1‘, 80, ‘jax‘, ‘zhai‘) login(‘127.0.0.1‘, username=‘root‘) login(‘localhost‘, port=80,password=‘com‘) login(port=80, password=‘123‘, host=‘www‘)
可变参数
位置参数的可变参数
#构造函数 def add(*nums): sum = 0 print(nums) for a in nums: sum +=a return sum #调用 add(1,4,5,1,2,5)
关键字参数的可变参数
#关键字参数的可变参数 def showconfig(**kwargs): for k,v in kwargs.items(): print(‘{} = {}‘.format(k, v)) #调用 showconfig(host=‘127.0.0.1‘,port=‘80‘,username=‘jax‘,password=‘123‘)
可变参数混合使用
def showconfig(username, password, **kwargs) def showconfig(username, *args, **kwargs) def showconfig(username, password, **kwargs, *args)
总结:
举例:
#定义函数 def fn(x, y, *args, **kwargs): print(x) print(y) print(args) print(kwargs) #调用 fn(3,5,7,9,10,a=1,b=‘python‘) fn(3,5) fn(3,5,7) fn(3,5,a=1,b=‘python‘) fn(7,9,y=5,x=3,a=1,b=‘python‘) # 错误,7和9分别赋给了x,y,又y=5、x=3,重复
keyword-only参数:
def fn(*args, x): print(x) print(args) #fn(3,5) #报错,3和5被args接受,而x是keyword-only参数,必须给出x=*** #fn(3,5,7) #报错,3、5和7被args接受,而x是keyword-only参数,必须给出x=*** fn(3,5,x=7)
args可以看做已经截获了所有的位置参数,x不使用关键字参数就不可能拿到实参
#错误案例 **kwargs语法就应该在最后面 def(**kwargs, x): print(x) print(kwargs)
可以理解为kwargs为关键字参数,就算写了x=5,x也永远拿不到值,所以是语法错误
keyword-only参数另一种形式
def fn(*, x,y): print(x,y) fn(x=5,y=6)
*号之后,普通形参都变成了必须给出的keyword-only参数
def fn(*args, x=5): print(x) print(args) fn() # 等价于fn(x=5) args可以没有实参给他 fn(5) # args = 5 x = 5 fn(x=6) # args = () x=6 fn(1,2,3,x=10) # args = (1,2,3) x=10
def fn(y, *args, x=5): print(‘x={}, y={}‘.format(x, y)) print(args) fn() # 报错,因为y没有获得实参 fn(5) #正确 y获取位置参数5 args为空 x=5 fn(x=6) # 报错,因为y没有获得实参 fn(1,2,3,x=10) #正确 y =1 args=(2,3) x=10 fn(y=17,2,3,x=10) # 报错 fn(1,2,y=3,x=10) #x 是 keyword-only参数 y被重复定义
def fn(x=5, **kwargs): print(‘x={}‘.format(x)) print(kwargs) fn() #x= 5 kwargs={} fn(5) #x = 5 kwargs={} fn(x=6) # x =6 kwargs={} fn(y=3,x=10) #x =10 kwargs={‘y‘: 3} fn(3,y=10) #x =3 kwargs={‘y‘: 10}
参数规则:
def fn(x, y, z=3, *arg, m=4, n, **kwargs): print(x,y,z,m,n) print(args) print(kwargs)
注意:
参数规则举例:
def connect(host=‘localhost‘, port=‘3306‘, user=‘admin‘, password=‘admin‘, **kwargs): print(host, port) print(user, password) print(kwargs) connect(db=‘cmdb‘) connect(host=‘192.168.1.123‘, db=‘cmdb‘) connect(host=‘192.168.1.123‘, db=‘cmdb‘, password=‘mysql‘)
举例:
def add(x, y): return x+y add(4, 5) add((4,5)) #报错 add((4, 5)[0], (4, 5)[1]) add(*(4, 5)) #或 列表 add(*[4,5]) 集合 add(*{4,6}) add(*range(1,3)) # 切忌一订要加*
def add(x, y): return x+y add(*(4,5)) # 解构成4,5 位置参数传进去 d = {‘x‘: 5, ‘y‘: 6} add(**d) #解构成x=5,y=6 关键字参数传进去 #add(**{‘a‘: 5, ‘b‘: 6}) #解构成 a=5,b=6 关键字参数进去,没找到形参,报错 add(*[4,5]) #解构成4,5 位置参数传进去 add(*{4,6}) #解构set add(*{‘a‘: 5, ‘b‘: 6}) #一个* 解构key 不报错,输入是ab
标签:cal 编程 重复 一段 com 素数 调用 可变 span
原文地址:https://www.cnblogs.com/xzkzzz/p/11225858.html