- isinstance()
类似type(),但是如果要判断两个类型是否相同推荐使用 isinstance()。
isinstance()的语法:isinstance(object, classinfo)
object – 实例对象。
classinfo – 可以是直接或间接类名、基本类型或者由它们组成的元组。
比如:
isinstance (a,(str,int,list)) # 是元组中的一个返回 True
True
对于基本类型来说 classinfo 可以是:
int,float,bool,complex,str(字符串),list,dict(字典),set,tuple
要注意的是,classinfo 的字符串是 str 而不是 string,字典也是简写 dict。
2.默认参数:例子如下:
def enroll(name, gender, age=6, city=‘Beijing’):
比如调用enroll(‘Bob’, ‘M’, 7),意思是,除了name,gender这两个参数外,最后1个参数应用在参数age上,city参数由于没有提供,仍然使用默认值。
注意:默认参数必须放在必选参数的后面;变化越小的默认参数放在越后面。
定义默认参数要牢记一点:默认参数必须指向不变对象!
3.可变参数
如下函数实现了a2 + b2 + c2 + ……,并且参数个数不确定:
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
这个时候就适合使用可变参数,
在没有使用可变参数之前,需要构建list或tuple传入参数,如calc([1, 2, 3]),calc((1, 3, 5, 7))
而如果使用可变参数,就可以只需要如下调用函数的方式就可以了calc(1, 2, 3),calc(1, 3, 5, 7)
需要做的就只是在定义函数的时候,括号里面的参数前面加一个星号 * 即可:
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
调用该函数时,可以传入任意个参数,包括0个参数,在调用该函数的时候,这些参数可以自动组装成为一个tuple。
如果已经有一个list或者tuple,则采用如下方式:
nums = [1, 2, 3]
calc(*nums)//也就是在变量名前加一个星号。
*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。