如果我们要计算一个圆的面积,就是3.14*r*r,如果每次就算,则每次都要写一遍,就很麻烦,所以有了函数,我们就可以通过调用函数的方法,直接使用就行了。
这里我们可以访问 内置函数 — Python 3.10.6 文档 查看python的内置函数有哪些,也可以通过help(abs)查看abs函数的帮助信息。
>>> abs(10)
10
>>>abs(-20)
20
abs() 函数用于返回绝对值的
在python中,定义一个函数使用def语句,依次写出函数名、括号、括号中的参数与冒号:,然后在缩进块中编写函数体,函数的返回值使用return语句返回。
def my_abs(x):
if x >= 0:
return ture
else:
return flase
如果已经把my_abs()的函数定义保存为abstest.py文件了,那么,可以在改文件的当前目录下面启动python解释器,用 from abstest import my_abs来导入my_abs() 函数,注意abstest是文件名(不含.py扩展名):
空函数
如果要定义一个不做的空函数,可以用pass。
def nop():
pass
pass什么都不做,但它有什么用呢?实际上它用来作为占位符,比如现在还没有想好要怎么写函数的代码,就可以先放一个pass,让代码能够运行起来。
比如: if age > = 18;
pass
这里如果缺少了pass,代码运行的时候就会有语法错误。
参数检查
返回多个值
小结:
定义函数时,需要确定函数名和参数个数;如果有必要,可以先对函数的数据类型做检查;函数体内部可以用return随时返回函数结果,函数执行完毕也没有return语句时,自动return None。函数可以同时返回多个值,但其实就是以一个tuple。
函数的参数
包括默认参数、可变参数和关键字参数。
位置参数:
可以把 power(x)修改为 power(x, n),用来计算 x^n
默认参数:
新的power(x,n)函数定义没有问题,但是旧的代码因为缺少了一个参数无法被正常调用了。
这个时候,默认参数就派上用场了,由于我们经常计算x^2,所以,完全可以把第二个参数n的默认值设为2:
def power(x,n=2):
s = 1
while n>0:
n=n-1
s=s*x
return s
而对于n > 2 的其他情况,就必须明确地传入n,比如power(5,3)
调用enroll()函数只需要传入两个参数。
如果要继续传入年龄、城市等信息怎么办?这样的话我们可以把年龄和城市设置为默认参数:
定义默认参数要牢记一点:默认参数必须指向不变对象!
可变参数
但是,如果我们把number更改为*number的可变参数,在调用的时候就可以简化
如果已经有一个list或者tuple,要调用一个可变参数的情况。
上面这个写法是可行的,但是太繁琐了,如果在list或者tuple的前面加上一个*号,把list或tuple的元素变成可变参数传进入。
*nums表示把nums这个list的所有元素作为可变参数传进去。
关键字参数有什么用?它可以扩展函数的功能。比如,在 person 函数里, 我们保证能接收到 name 和 age 这两个参数,但是,如果调用者愿意提供 更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了 用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这 个函数就能满足注册的需求。
命名关键字参数
对于关键字参数,函数的调用者可以传入任意不受限制额关键字参数。
如果要限制关键字参数的名称,就可以用命名关键字参数,例如,只接受city和job作为关键字参数。这种方式定义的函数如下:
def person(name, age, *, city, job):
print(name,age,city,job)
和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。调用方式。
使用命名关键字参数时,要特别注意,*不是参数,而是特殊分隔符。如果缺少*,Python解释器将无法识别位置参数和命名关键字参数:
如果缺少了*,python解释器就无法识别位置参数和命名关键字参数:
def person(name,age,city,job):
#缺少*,city 和 job 被视为位置参数
pass参数组合
在python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数、这5种参数都可以自由组合使用,除了可变参数和命名关键字参数的混合。但是注意,参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。
比如定义一个函数,包含上述若干种参数:
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。
最神奇的是通过一个 tuple 和 dict,你也可以调用上述函数:
要注意定义可变参数和关键字参数的语法:
递归函数
如果一个函数在内部调用自身本身,这个函数就是递归函数。
例如,计算阶乘n!,可以使用函数fact(n)表示,可以看出。
fact(n)=n!=face(n-1)*n 只有n=1时候需要特殊处理。
于是,fact(n)用递归的方式写出来就是:
def fact(n):
if n==1
return 1
return n*fact(n-1)
上面就是一个递归函数。
高级特性
掌握了Python的数据类型、语句和函数,基本上就可以编写出很多有用的程序了,比如狗仔一个1,3,5,7,9,,,99的列表,可以通过循环实现。
L=[]
N=1
while N <== 99
L.append(N)
N=N+2
切片
取一个list或tuple的部分元素。
取前三个元素:L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
在字符串里面也提供了很多截取的函数,例如substring就是针对于字符串的切片
TRANSLATE with x English TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back 标签:return,函数,切片,关键字,参数,def,python3,定义 From: https://www.cnblogs.com/frank1/p/16618676.html