对于*name形式的可变参数会接收所有未命名
的变量参数,并放入_对象中,该元组可以包含形参列表之外的所有位置参数。
填name或者元组
这出题老师也是体育老师出身
__name__
是一个标识模块名字的系统变量。__name__
在不同的情况下有不同的含义,分两种情况:__name__
就是字符串"__main__"
,而if __name__ == '__main__':
语句也就是判断模块名字是不是__main__
来判断当前模块是不是主模块。__name__
就是py文件的名字(不加后面的.py),这是if __name__ == '__main__':
判断为False
,在import时执行此模块不会执行if
后的内容。__name__
的属性,表示函数的名字。name形式的可变参数的作用是接收任意个数的普通参数,并且将这些参数全部放在一个由元组组成的对象中。该元组放在函数对象的__name__属性之后,名称为"name"。这样,函数可以接收任意数量的参数。例如:
def add(*numbers):
sum=0
for n in numbers:
sum+=n
return sum
print(add(1,2,3,4,5)) #15
print(add(1,2,3)) #6
这里的函数add可以传入任意数量的参数。注意,*name形式的可变参数只能放在函数参数的结尾位置,在它之后的参数必须用关键字参数的形式传递。例如:
def send_email(subject, message, *recepient, cc=None, bcc=None):
# Send email with `subject`, `message` and recipients in `recepient` tuple
# `cc` is an optional parameter
# `bcc` is also an optional parameter
pass
在这个例子中,*recepient可变参数出现在必须参数的后面,cc和bcc是可选参数,必须用关键字参数的形式传递。这样,send_email()函数可以接收任意数量的接收者地址,以及可选的cc和bcc参数。