Python 函数的使用方法


在Python中函数这个概念,根据我的理解就是我们可以根据自己的需要定义不同功能的函数(在类里面叫方法),而且可以重复调用。还有一些内建函数是系统自带的,可以直接使用。

详细教程如下:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017105145133280.



定义函数

定义一个函数要用到关键字def,下面就定义一个简单的求绝对值的函数:


def my_abs(x):                                                                 
    if not isinstance(x,(int,float)):        #isinstance() 系统内置函数 对数据类型做检查,本列只允许传入整数和浮点数               
        raise TabError("bad operand type")   # raise抛出指定的异常信息
                         
    if x >= 0:                                                                 
        return x                                                               
    else:                                                                      
        return -x     
                                                                 

调用该函数,并传入参数

>> my_abs(-3)
3
>>my_abs('sdf')
TabError: bad operand type

函数的参数

位置参数

先写一个计算 x2的函数:


def f(x):
	return x * x 

当我们调用函数f的时候,参数x就是一个位置参数,所有我们调用的时候必须传入有且仅有一个参数x

>>>f(5)
25
>>>f(15)
225

但是呢上面的函数有一个缺陷不能计算xn ,那么我们接下来实现这个功能:

def f(x,n)
	s = 1
	while n > 0
		n = n - 1
		s = s * x
	return s

修改后的power(x, n)函数有两个参数:xn,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数xn

默认参数

默认参数就是我们给定参数一个默认值,这样我们不传入这个参数的时候,默认值就会生效,我们也可以自己传入指定的参数去替代设置的默认值。

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

调用

>>> power(5)
25
>>> power(5, 3)
125

注意:

1、必选参数在前,默认参数在后,否则Python的解释器会报错;

我们也可以同时定义几个默认参数,如果要改变其中一个默认参数的值,在传参的时候就需要加上参数名。

默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!


可变参数

可变参数,就像他的名字一样,我们传入的参数的数量是不确定的,可以是1个、2个、3个到任意个,还可以是0个。

语法格式:

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

只需要在参数名前加一个*就可以了。

调用

>>> calc(1, 2)
5
>>> calc()
0

对于一个可变参数,我们可以传入一个list或者tuple

>>>nums = [1,2,3]
>>>calc(*nms)
14

关键字参数

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)
>>> person('Michael', 30)
name: Michael age: 30 other: {}

我们可以传入任意个关键字参数:

>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

同样使用类似可变参数的方法,我们可以传入一个字典。


命名关键字参数

关键字参数无法对参数的多少个参数名进行限制,而命名关键字参数刚好解决了这个问题。

def aaa(name,age,*,city,job)
	pring(name,age,city,job)

上面列举了语法格式很简单,下面我们看看如何调用

>>>person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer

这是我们就必须传入city和job这两个关键字参数了。

我们在定义命名关键字参数的时候,也可以使用类似默认参数的方法,给city或job设置默认值,这样我们就可以不传入这个参数了。使用方法和默认参数一样。

def aaa(name,age,ages*,city,job)
	pring(name,age,city,job)

如上所示我们在定义命名关键字参数的时候,如果前面有可变参数,那么后面的就是命名关键字参数,我们并不需要做其他的操
作了。

参数组合

我们可以根据需要对上面讲的几种参数进行组合使用,可以同时包含上述所有参数,然后这样做没有意义。

当定义func(*args, **kw)这样同时包含可变参数和关键字参数的函数时,那么它可以接受任意参数。


函数的变量的作用域

var0 = 123
print(var0)

def func():
    global var0    # 如果没有global 这行语句 变量var0的赋值只会在函数内生效,
    # 如果有这行语句var0将会变成全局变量,函数内的赋值将会影响到函数外的变量。
    var0 = 456
    print(var0)
    
#调用函数
func()
>>>123
>>>456

可以看到函数体内对变量进行赋值,改变了函数体外的变量

递归函数

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

我们来写一个计算乘阶运算的函数:


def fact(n):
	if n == 1
		return 1
	return n * fact(n - 1)

可以看出

fact(n)=n!=1×2×3×⋅⋅⋅×(n−1)×n=(n−1)!×n=fact(n−1)×n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值