1. 如何为函数定义keyword-only参数(写出个例子即可)?
Keyword-Only Arguments表示给函数传参的时候必须指定参数名,也就是关键字。
示例
一般函数的定义与传参方式:
def main(arg1, arg2):
print(arg1, arg2)
main(1, 2)
main(arg1=1, arg2=2)
定义:
main函数定义两个参数arg1和arg2。
传参:
直接传参或指定参数名(关键字)传参都可以。
带强制关键字参数的函数的定义与传参方式:
def main(arg1, *, arg2):
print(arg1, arg2)
main(1, 2) # 错误的传参方式(会报错)
main(1, arg2=2) # 正确的传参方式
定义:
main函数定义一个一般参数arg1和一个强制关键字参数arg2。
传参:
星号前面的参数为一般参数,可以直接传参,也可以指定参数名即关键字传参;但星号后面的参数都是强制关键字参数,所以必须以指定参数名的方式传参!
2. 什么是LEGB,请解释
LEGB含义解释
L(Local) > E(Enclosing外层函数局部变量) >G(Global)> B(内建函数(built-in))
寻找变量的调用顺序,就是采用的LEGB原则(就近原则)
寻找顺序:从下往上、从里往外
在各自的函数定义本地变量,函数执行优先选择本地的;
当内层函数不存在本地变量的时候,会选择外层函数局部变量;
当函数中局部变量全部不存在是,会选择global全局变量;
局部变量:函数内部的变量(局部命名空间)
全局变量:函数内部和外部(全局命名空间)
以foo()内部的print(a)为例:
1.如果foo()函数内部有a这个变量,那么a这个变量就是局部的
2.如果foo()函数内,没有这个变量,那么就会去找该函数外层的函数func()中,有没有a这个变量,如果有,那么这个a就是闭包的
3.如果func()中没有变量a,那么就会去最外层的全局变量找
4.如果全局变量没有a,就去内置中找
3. 实现一个计算机程序,如下效果:
- 运行后提示让用户输入一个数字
- 提示输入操作符(+ - * /)
- 再次提示输入一个数字
- 打印计算结果
- 在不退出程序的前提下,可以允许用户继续输入新一组数据计算
- 尽可能改善用户体验