Python函数小知识

目录

一、函数的定义和调用

二、函数参数

三、函数作用域

四、递归函数和匿名函数

一、函数的定义和调用

def 函数名(参数): 自定义函数可以分为有参函数和无参函数 。

函数的作用: 在Python中定义函数可以提高代码的复用率,避免重复的代码,可以减少代码量调用函数。

如下例子:

python 复制代码
"""
def 函数名(参数):
    函数体     #定义在函数体里面的代码不会自动执行,需要调用对应函数执行对应函数体
 调用形式:函数名加括号
    return 表达式
"""
def food():
    print('苹果,香蕉,葡萄')
food()  #调用形式:函数名加括号

运行结果:

return:返回值,结束函数,选择性地返回一个值给调用方。

print与return的区别:

print打印的数据不能被变量接收,return返回的值能被变量接收。

如下例子:

python 复制代码
def food():
    print('苹果,香蕉,葡萄')
    return '水果'
print(food())  #调用形式:函数名加括号

结果如下:

二、函数参数

必备参数: 定义时的参数与调用时的参数数量必须一一对应 参数与参数之间用逗号隔开。

默认参数 可以给参数赋一个默认值 。注意:默认参数要放在必备参数的后面。

不定长参数: 任何没有被定义的参数都会被不定长参数接收 ,定义不定长参数时要加上*号,使用的时候不用加 。

注意:参数的顺序:必备参数->默认参数->不定长参数。

例子:

python 复制代码
def food(x,y=10,*args,**kwargs):
    print(x)
    print(y)
    print(args)
    print(kwargs)
food("水果",4,"香蕉","苹果",'榴莲','西瓜',a=4)  

结果如下:

三、函数作用域

全局作用域:函数内部可以访问外部的变量,但是不能直接进行修改 。

定义在py文件中函数外面的变量称之为全局变量。

global关键字是全局变量声明,只有声明之后函数内部才可以修改全局变量。

局部作用域:在嵌套的函数中,内层函数可以访问外层函数的变量,但是不能直接修改。

nonlocal关键字是全局变量声明,只有声明之后函数内部才可以修改全局变量。

四、递归函数和匿名函数

递归函数

如果在一个函数的内部调用了该函数本身,那么这个函数就是递归函数。

递归函数也需要一个结束条件,否则超出递归深度就会报错。

如下例子:

python 复制代码
def shuzi(n):
    if n <= 1:
        return 1
    else:
        return n * shuzi(n - 1)  # 返回了函数自身-> 5 * 4 * 3 * 2 * 1
print(shuzi(5))

结果如下:

匿名函数

匿名函数就是没有函数名的函数,也就是不再使用def关键字定义的函数。

如果要声明匿名函数,则需要使用lambda关键字。

需要注意的是匿名函数能接受任何数量的参数但是只能返回一个表达式的值。

如下例子:

python 复制代码
li = ['苹果','西瓜','香蕉']  # 以列表中的元素长度进行排序
li.sort()  # 字符串会根据首字母的拼音进行排序
print(li)
li.sort(key= lambda x : len(x),reverse=True)  # 使用lambda关键字设置了排序要求,以列表中的字符串长度进行排序
print(li)

结果如下:

相关推荐
Trouvaille ~1 分钟前
【机器学习】从流动到恒常,无穷中归一:积分的数学诗意
人工智能·python·机器学习·ai·数据分析·matplotlib·微积分
是十一月末18 分钟前
Opencv实现图像的腐蚀、膨胀及开、闭运算
人工智能·python·opencv·计算机视觉
IT女孩儿19 分钟前
JavaScript--WebAPI查缺补漏(二)
开发语言·前端·javascript·html·ecmascript
m0_7482389220 分钟前
webgis入门实战案例——智慧校园
开发语言·ios·swift
云空26 分钟前
《探索PyTorch计算机视觉:原理、应用与实践》
人工智能·pytorch·python·深度学习·计算机视觉
Clockwiseee33 分钟前
PHP伪协议总结
android·开发语言·php
小灰灰搞电子35 分钟前
Qt实现Android的图案密码(图形解锁)源码分享
开发语言·qt
dowhileprogramming36 分钟前
Python 中的迭代器
linux·数据库·python
吴冰_hogan2 小时前
JVM(Java虚拟机)的组成部分详解
java·开发语言·jvm
0zxm2 小时前
08 Django - Django媒体文件&静态文件&文件上传
数据库·后端·python·django·sqlite