keyword-only形参,位于*args或者*,之后,只能接受关键字传入实参。
#示例1 def foo(x, *args, y): print(x, y, args) foo(1, 2, 4, y=200) #调用时keyword-only参数只支持以关键字形式传入的参数 #示例2 def foo(*, x, y): print(x, y) foo(x=1, y='abc') #示例3 def bar(a, b, /, c, d=10, *args, m=20, n, **kwargs): #注意*args后面的m=20定义缺省值可以放在前面 print(a, b, c, d, args, m, n, kwargs) #该函数中,m和n时keyword-only参数,需要以k,y的形式传入实参,但是因为m有默认值,所以直接传入n的参数即可。注意传参的时候要放到位置参数后面。 bar(1, 2, n=100, c=5) 2 5 10 () 20 100 {}
变量的优先级顺序,优先级由高低依次是L-->E-->G-->B。函数定义中,优先使用本地局部变量,本地无定义的情况下在按顺序向外查找。
L: Local,本地局部变量。
E: Enclosing,外层函数局部变量。
G: Goabl,跟模块有关,当前模块中的全局变量,模块需要加载,默认是main模块。
B: Built-in,内建变量,print,list,str,int,range,Exception 生命周期和解释器相同。
def addition(x, y): return x + y def subtraction(x, y): return x - y def multipulication(x, y): return x * y def division(x, y): return x / y def calculator(*args): print("="* 30 + "简单计算器" + "=" * 30) x = int(input('请输入一个数字: ')) o = input('请输入运算符 + - * /: ') y = int(input('请输入第二个数字: ')) if x or y or o: print("请按要求输入相应的字符。") if o == '+': return addition(x, y) elif o == '-': return subtraction(x, y) elif o == '*': return multipulication(x, y) if o == '/' and y != 0: return division(x, y) else: print("0不可以做除数,请重新输入。") while True: print("计算结果:{}".format(calculator())) #输出结果 ==============================简单计算器============================== 请输入一个数字: 1000 请输入运算符 + - * /: + 请输入第二个数字: 1000 请按要求输入相应的字符。 计算结果:2000