百度领航团飞桨零基础Python 学习笔记

函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

自定义函数

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
例1:下面定义了一个student_name的函数

def student_name(name):
“打印学生的名字”
print(‘姓名:’, name)
return {‘姓名’:name}
例2:下面定义一个函数,返回多个值

def student_name_and_age():
“记录学生的名字和年龄”
name = input(‘请输入姓名\n’)
age = int(input(‘请输入年龄\n’))
print(f’姓名:{name};年龄:{age}’)
return name,age
函数的调用
rst = student_name(‘Alice’)
rst = student_name_and_age()
name, age = student_name_and_age()
补充:函数可以嵌套调用

例4:函数嵌套调用

def worker(s):
rst = 10 / float(s)
return rst
def group_leader(s):
rst = worker(s) * 2
return rst
def CTO(s):
return group_leader(s)
函数的参数传递
位置参数
缺省参数
可变参数
关键字参数
命名关键字参数

1 位置参数:最简单。位置参数须以正确的顺序传入函数、数量必须和声明时的一样

例1-3都是位置参数

2 缺省参数:调用函数时,缺省参数的值如果没有传入,则被认为是默认值。

例5:

def student_name_and_age(name, age=‘不愿透露’):
“设置默认参数”
print(‘姓名:%s 年龄 %s’ %(name, age))
调用时:缺省参数可以不给值,也可以给值。

student_name_and_age(‘张三’)
student_name_and_age(‘张三’, 18)
3 可变参数:传入的参数个数是可变的,可以是0个、1个到任意个。在函数调用时自动组装为一个tuple。

用法:在参数名前加个‘*’。

例6:

def all_student_names(*names):
for name in names:
print(‘姓名:’, name)
调用时:

names = (‘张三’,‘李四’,‘王五’)
all_student_names(names)
4 关键字参数:允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

用法:在参数名前有2个’*’。

例7:

def student_info(name, age, **kw):
print(f’我的名字叫:{name},年龄:{age},其它信息:{kw}’)
def student_info_more(name, age, **kw):
print(f’我的名字叫:{name},年龄:{age},其它信息:{kw}’)
if ‘city’ in kw:
print(‘来自:’, kw[‘city’])
调用:

student_info(‘张三’, 18, height=180)
student_info_more(‘张三’, 18, height=180, city=‘北京’)
5 命名关键字参数:可以限制关键字参数的名字。

例8:‘*’后的参数height和weight就是命名关键字参数。

def print_person_info(name, age, *, height, weight):
print(‘我的名字叫:’, name, ‘年龄:’, age,‘身高’, height, ‘体重’, weight)
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数。也可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

lambda匿名函数
lambda 只是一个表达式,函数体比 def 简单很多。
lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
例9:lambda 若干个输入参数 : 返回值的表达式。

lambda arg1, arg2: arg1 + arg2
调用时:

(lambda arg1, arg2: arg1 + arg2 )(1, 2)
更常见的定义和调用:

add = lambda arg1, arg2: arg1 + arg2
add(1,2)
高阶函数
一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数。

例10:在func_x函数中,参数f就是另一个函数名。

def func_x(x, f):
return f(x)
int2str = lambda x : str(x)
调用时:

func_x(-112,abs) #求-112的绝对值
func_x(-112,int2str) #把-112转成字符串
总结
对比C语言来说,Python的函数定义和调用都更简洁

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值