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)

结果如下:

相关推荐
孞㐑¥2 分钟前
Linux之进程控制
linux·开发语言·c++·经验分享·笔记
Akiiiira4 分钟前
【日撸 Java 300行】Day 14(栈)
java·开发语言
景天科技苑18 分钟前
【Rust泛型】Rust泛型使用详解与应用场景
开发语言·后端·rust·泛型·rust泛型
Swift社区18 分钟前
Swift实战:如何优雅地从二叉搜索树中挑出最接近的K个值
开发语言·ios·swift
Hello world.Joey19 分钟前
数据挖掘入门-二手车交易价格预测
人工智能·python·数据挖掘·数据分析·conda·pandas
刘延林.23 分钟前
树莓5安装 PyCharm 进行python脚本开发
ide·python·pycharm
愚润求学25 分钟前
【Linux】简单设计libc库
linux·运维·开发语言·c++·笔记
桃子酱紫君29 分钟前
华为配置篇-RSTP/MSTP实验
开发语言·华为·php
刚入坑的新人编程30 分钟前
C++STL——map和set的使用
开发语言·c++
小洛~·~33 分钟前
多模态RAG与LlamaIndex——1.deepresearch调研
人工智能·python·深度学习·神经网络·chatgpt