Python学习一点通之函数

本文章为学生的一点见解,是知识的分享

上一篇
下一篇


知识引入

在计算机语言中,函数是指实现某一特定功能的语句集合

目录

一、def关键字

1.函数名(funcname)

2.参数(paras)

(1).参数的传递类型

(2).参数的传递方式

3.函数体(statements)

(1).函数的嵌套

(2).变量的作用域

4.返回值(expression)

二、lambda函数


众所周知,Python强大的一点在于有着自己的类库,而且标准库还非常庞大,并且Python还有可定义的第三方库给用户使用。今天,我们先不讨论标准库中的内置函数,而是讨论如何定义第三方库,简单点说,即定义函数,同时调用它。函数的定义方法主要有两种,一种是可以重复多次调用,通过def关键字定义的可定义的函数;另一种是只能调用一次,通过lambda函数定义的匿名函数。

一、def关键字

Python中的利用 def关键字 定义函数的方法 ,格式如下:

def 函数名(形式参数):
    函数体
    return [返回值]

1.函数名(funcname)

函数名必须遵循标识符命名规则,只能由数字,英文字母,下划线和美元符号($)组成,并且不能以数字开头

2.参数(paras)

函数的参数分为传入函数的变量及常量的实际参数(实参)和接收数据的变量的形式参数(形参)

,那么参数传递的形式和方式是怎样的呢?

(1).参数的传递形式

针对函数参数的传递形式,取决于实参的数据类型,当实参是基本数据类型a.传值,当实参是组合数据类型b.传址

注意:由于组合数据类型是传址,故当函数内部数据改变时,相当于直接操作外部数据

(2).参数的传递方式

参数的数量可以为零,也可以有多个,多个参数之间用逗号隔开

def add(x,y,z):
    return x+y+z

a.位置参数

对于位置参数,即实际参数列表需要与形式参数列表一一对应,体现在传入数据的数量,数据类型的对应。

add(1,2,3)

如上,则add函数接收到结果是x=1,y=2,z=3

b.赋值参数

赋值参数即是对应函数时形式参数列表中存在赋值操作,则传入参数时可以省略该参数,或者通过在赋值操作重新赋值

def add(x,y,z=1)
    return x+y+z
print(add(1,2))        # 4
print(add(1,2,3))        # 6

特别提醒:位置参数与赋值参数混用时后者要位于参数列表的末尾

c.可变参数

上述传参方式的参数列表长度都是固定的,因此产生了可变参数,即传入参数数量是任意可变的。可变参数参数分为一个星号修饰*以元组接收,两个星号修饰**以字典接收

def funname(*args, **kwargs):
    print(type(args))
    print(type(kwargs))


funname()

运行结果:
<class 'tuple'>
<class 'dict'>

3.函数体(statements)

(1).函数的嵌套

函数的嵌套包括,在函数内部定义只能在该函数里面调用的函数,该方法称为a.嵌套定义以及在定义函数时调用外部已经定义好的函数,该方法称为b.嵌套调用

def sub(x, y):  # 嵌套定义
    return x - y


def calculation(x, y):
    def add(x, y):  # 嵌套定义
        return x + y

    return add(x, y), sub(x, y)


print(calculation(1, 1))
结果:(2, 0)

(2).变量的作用域

根据变量的作用范围可将变量分为,在函数外定义的a.全局变量和在函数内定义的b.局部变量

注意:全局变量变量在函数中只读不写,如果要更改则需要先加global修饰说明该相名变量为全局变量,并且不能在使用后修改全局变量

num = 1


def mod():
    num = 2
    print(num)


mod()
print(num)
  
结果:
2
1
*****************
num = 1


def mod():
    global num
    num = 2
    print(num)


mod()
print(num)
结果:
2
2
*****************
num = 1


def mod():
    print(num)
    num = 2


mod()
print(num)
结果:
报错

4.返回值(expression)

return语句可用于返回函数的任意数据类型的结果,也可以省略,由Python自动返回None

小贴士:Python可以返回多个返回值,多个返回值返回值之间用逗号隔开

def add(x, y, z=0):
    z = x + y
    return x + y, z


result1, result2 = add(1, 1, z=1)
print(result1, result2)
结果:
2 2

二、lambda函数

相比通过def关键字定义函数,lambda函数定义函数的特殊的在函数体必须是一行简单的语句,格式如下:

lambda parameter:expresssion

其中parameter是可选的参数表,是待处理数据的传入;expression是函数体部分,是数据处理后结果的返回

助理小贴士:匿名函数可看作是只有返回语句的可定义函数

例如
匿名函数形式:
add=lambda x,y:x+y
可定义函数相似:
def add(x,y):
    return x+y
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值