1. python中函数是可以直接赋值给变量,但注意不要写括号(),有括号是执行函数。
1.1 示例一
def fun(*arg):
a=arg[0]*arg[1]
return a
Test=fun
result=Test(3,4)
输出
12
1.2 示例二
def wrapper(N):
def add(X):
return X+N
return add
test=wrapper(4)# 这里test等于在N=4,被指定情况下的add函数
print(test(3))
输出
7
2. * args和**kwargs的详解
2.1 args是arguments的缩写,kwargs是keyword arguments的缩写,这两个均可以用其他参数名替换。
- args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用args和**kwargs时,必须*args参数列要在**kwargs前。
补充: - *args是用来传递一个非键值变长参数列表功能。
- **kwargs通常用来传递关键字变长参数。
2.2 *args
- *args代表传入列表list或者tuple;其使用代码举例如下,这里给出了两种传入参数的方法及参数变量遍历方法。注意列表 list or 元组tuple在传入时需加
*
号。
def test(*args):
print(args[0])
print("***************")
for arg in args:
print(arg)
return
a=(1,2,3)
test(*a)
test(5,6,7)
输出
1
***************
1
2
3
5 #这里开始是test(4,5,6)的输出
***************
5
6
7
2.3 **kwargs
- kwargs 必须是dict类型,这里给出使用举例,可以通过字典传参,但必须在变量前加
**
;也可以直接新定义参数传入。
def test(**kwargs):
for key,value in kwargs.items():
print("key: ",key," value: ",value)
# method1
d={"Nancy":21,"Tom":24}
test(**d)
# method2
print("")
test(Jack=22,Jenny=20)
输出:
key: Nancy value: 21
key: Tom value: 24
key: Jack value: 22
key: Jenny value: 20
3. tuple与list的区别
3.1 区别一,tuple一旦创建,就不能被修改,list被创建后,可以修改
- 定义tuple和list的方法类似,区别是元组集合用小括号,list是中括号
3.1.1 Tuple的好处
- Tuple 比list操作速度快,如果一个常量集的唯一用处是不断遍历它,请使用tupe代替list;
- 对于不需要修改的数据进行“写保护”,可以使代码更安全。如果必须修改这些值,则需要执行tuple到list转换。
3.2 区别二 Tuple不存在的方法
*不能向tuple里增加元素,因此tuple没有append或者extend函数
- 没有remove或pop函数,因为不能删除元素
- 没有Index函数,不能在tuple中查找元素
- 可以使用
for i in tt
来遍历元素。或者[]
来索引,如tt[0]