关键字参数: 形如 kwarg = value
参数类型:
- 必备参数
- 命名参数
- 缺省参数
- 不定长参数
必备参数
必须以正确的顺序传入函数,调用时的数量必须和声明时的一样
不然会出现语法错误
def printme(str):
# 打印任何传入的字符串
print str
return
printme() # 语法错误,必须传值
廖雪峰大神说:
位置参数 : 调用函数时,传入的值依顺序赋值
默认参数: 调用函数时,默认参数可不赋值,默认参数必须只想不变对象
可变参数: 定义函数时,在参数前面添加 * 符号,在函数内部,参数接收到的就是一个tuple
Python 允许在list 或tuple 前面加一个 * 号,把list 或tuple 的元素变成可变参数传进去关键字参数: 允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict ,在参数前面添加 ** 符号
命名关键字参数: 可限制关键字参数传入
需要分隔符 * ,* 后面的参数视为命名关键字参数
如果函数定义中已经又一个可变参数,后面就不再需要 特殊分隔符 *
参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
遍历技巧
# 在字典中遍历时,关键字和对应的值可以使用 items() 方法同时解读出来:
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
... print(k, v)
...
# 在序列中遍历时,索引位置和对应值可以使用 enumerate() 函数同时得到:
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
... print(i, v)
...
#同时遍历两个或更多的序列,可以使用 zip() 组合:
>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
... print('What is your {0}? It is {1}.'.format(q, a))
...