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)

结果如下:

相关推荐
Xin_ye1008618 分钟前
C# 零基础到精通教程 - 第十八章:部署与发布——让应用上线
开发语言·c#
思麟呀1 小时前
C++11并发编程:call_once一次性执行+atomic原子类型+CAS无锁编程+自旋锁
linux·开发语言·jvm·c++·windows
Dxy12393102161 小时前
Django 数据库 ENGINE 完全指南:选错了,性能差 10 倍
python·django
码不停蹄的玄黓1 小时前
Java 生产者-消费者模型详解
java·开发语言·python
爱讲故事的1 小时前
操作系统第一讲复习:为什么学习操作系统,以及操作系统到底在做什么?
linux·开发语言·windows·学习·ubuntu·c#
笨蛋不要掉眼泪1 小时前
Java并发编程:Executors框架类深度解析
java·开发语言·并发
凯瑟琳.奥古斯特2 小时前
力扣1235:加权区间调度最优解
java·python·算法·leetcode·职场和发展
_童年的回忆_2 小时前
【php】在linux下PHP安装amqp扩展
linux·开发语言·php
郑洁文2 小时前
基于Python的网络入侵检测系统
网络·python·php
AIMath~2 小时前
python中的uv命令揭秘
开发语言·python·uv