- 函数关键字
关键字是python内置的,具有特殊意义的标识符,自定义标识符命名时不可与之重复。可通过以下代码查看python内置的关键字内容
import keyword
print(keyword.kwlist)
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
共有33个关键字。
- Python 函数
- 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。
def printme( str ):
"打印传入的字符串到标准显示设备上"
print str
return
python作为一个动态语言其函数的参数也很“动态”。
参数可能有的情况:必选参数、默认参数、可变参数、关键字参数、命名关键字参数
function(a,b=1,*c,**d,*,e)
1.位置参数(正常传参)
就是固定的参数,函数中定义多少个参数,调用函数的时候后就传递多好个参数。
例如:
# 位置参数
def power(x,n):
num=0
while n>1:
num=num+x*x
n=n-1
return num
print(power(2,5))#16
2.默认参数(给定一个默认值)
首先注意:
(1)默认参数要放在最后面,不然会有误会,编译器不知道从哪个数开始算他不是默认参数
(2)默认参数必须指向不变对象
当函数中有部分参数的值在大部分时间是固定的时候,可以预先给它一个值。不用每一次都输入。当然有特殊情况的时候依然可以给它附一个新的值。
例如:power函数大部分时间计算平方根,则此时把n默认赋值为2。
def power(x,n=2):
num=0
while n>1:
num=num+x*x
n=n-1
return num
print(power(2)) #4
3.可变参数(*加参数名,表示此参数可变)
第1种方式:
可变的参数指的是列表(list),数组(tuple).因为其中的数据是可以改变的,将列表和数组作为参数传入函数中,所以函数的参数也是可变的。
例如:power函数
*第一种方法:使用 ** 放在参数名前,作为可变参数的标志
def calc(*number):
sum = 0
for n in number:
print ('n=',n)
print(sum)
sum = sum + n * n
return sum
number=[2,5]
print('calc',calc(number[0],number[1])) #29
#这里如果要使用列表的话,一定要如此写,不然会有:IndexError: tuple index out of range的报错
第2种方式:将*放在被传递的参数前
def calc(number0,number1):
sum = 0
while number1>1:
sum = sum + number0* number0
number1-= 1
return sum
print(calc(*[2,5])) #16
4.关键字参数(**加参数名,可以传入不同的参数)
函数可以传入不指定个数的参数。
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
当想要多传参数的时候,需要带上参数名。
def information(name,**kwargs):
print('name,dosomething:',name,kwargs)
information('simple1_6',something='write python blog')
#name,dosomething: simple1_6 {'something': 'write python blog'}
5.命名关键字参数(参数+*+参数,后面的参数都是可变参数)
def information(name,something,*,zhuangtai):
print("name:",name,'do',something,'zhuangtai:',zhuangtai)
information('simple1_6','write python blog',zhuangtai='come')
#name: simple1_6 do write python blog zhuangtai: come
args and **kwargs
用args和kwargs只是为了方便并没有强制使用它们.
当你不确定你的函数里将要传递多少参数时你可以用args.例如,它可以传递任意数量的参数:
相似的,**kwargs允许你使用没有事先定义的参数名:
你也可以混着用.命名参数首先获得参数值然后所有的其他参数都传递给args和kwargs.命名参数在列表的最前端.
args和**kwargs可以同时在函数的定义中,但是args必须在**kwargs前面.