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)

结果如下:

相关推荐
XZ-07000134 分钟前
week2-1-可视化
开发语言·python
Java后端的Ai之路42 分钟前
14、Python - 责任链模式
服务器·开发语言·人工智能·python·责任链模式
张人玉1 小时前
基于 Python 机器学习 与 PyQt5 桌面框架开发的可视化分析系统——基于大数据的网上购物消费行为分析可视化大屏
python·qt·机器学习·echarts·three.js
吴声子夜歌1 小时前
Java——基本类型
java·开发语言
一位正在转型AI全栈的前端工程师1 小时前
AI 全栈学习之旅 -Week 5:RAG 知识库问答系统:从零到生产级部署的全栈实践总结
前端·python
2601_962381861 小时前
Python办公联动:Excel数据一键自动生成PPT图表
python·数据分析·自动化·excel·ppt
东莞市永盛电气1 小时前
三相208V变380V变压器,出海工业设备供电适配方案
python·单片机·嵌入式硬件
「QT(C++)开发工程师」1 小时前
C++11 std::unique_ptr — 独占所有权的智能指针
c语言·开发语言·c++·qt
不正经学生1 小时前
C语言动态内存管理(上):堆上的自由与责任
c语言·开发语言·c++·算法·面试
AI情绪识别开源2 小时前
检信AI高一分班分科智选评估系统 v2.0测试报告
开发语言·数据结构·人工智能·科技