IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python函数 -> 正文阅读

[Python知识库]python函数

一、函数的概述:

1、函数的概念:函数是组织好的、实现单一功能或相关联功能的代码段。我们可以将函数视为一段有名字的代码,这类代码可以在需要的地方以“函数名()”的形式调用。

2、函数式编程的优点:

将程序模块化,既减少了冗余代码,又让程序结构更为清晰

提高开发人员的编程效率

方便后期的维护与扩展

二、函数的定义和调用:

1、定义函数:

def add():
    result = 11 + 22
    print(result)
#无参函数
def add_modify(a, b):
    result = a + b
    print(result)
#有参函数

2、调用函数:函数在定义完成后不会立刻执行,直到被程序调用时才会执行。

语法格式:函数名([参数列表])

#例如
add()
add_modify(10, 20)

函数内部也可以调用其他函数,这被称为函数的嵌套调用

def add_modify(a, b):
    result = a + b
    add()   	#嵌套调用函数add()
    print(result)
add_modify(10, 20)

3、函数参数的传递:我们通常将定义函数时设置的参数称为形式参数(简称为形参),将调用函数时传入的参数称为实际参数(简称为实参)。函数的参数传递是指将实际参数传递给形式参数的过程。

函数参数的传递可以分为位置参数传递、关键字参数传递、默认参数传递、参数的打包与解包以及混合传递。

函数在被调用时会将实参按照相应的位置依次传递给形参,也就是说将第一个实参传递给第一个形参,将第二个实参传递给第二个形参,以此类推。

def get_max(a, b):
    if a > b:
        print(a,"是较大的值!")
    else:
        print(b,"是较大的值!")
get_max(8, 5)

关键字参数的传递是通过“形参=实参”的格式将实参与形参相关联,将实参按照相应的关键字传递给形参。

def connect(ip, port):
    print(f"设备{ip}:{port}连接!")
connect(ip="127.0.0.1", port=8080)

函数在定义时可以指定形参的默认值,如此在被调用时可以选择是否给带有默认值的形参传值,若没有给带有默认值的形参传值,则直接使用该形参的默认值。

def connect(ip, port=8080):
    print(f"设备{ip}:{port}连接!")
connect(ip="127.0.0.1")
connect(ip="127.0.0.1", port=3306) #调用

结果

设备127.0.0.1:8080连接!

设备127.0.0.1:3306连接!

4、参数的打包和解包:

如果函数在定义时无法确定需要接收多少个数据,那么可以在定义函数时为形参添加“*”或“**”:

“*” —— 接收以元组形式打包的多个值
“**”—— 接收以字典形式打包的多个值
4.1打包:
def test(*args):
    print(args)
test(11, 22, 33, 44, 55) #调用

结果?(11, 22, 33, 44, 55)

def test(**kwargs):
    print(kwargs)
test(a=11, b=22, c=33, d=44, e=55) #调用

结果:{'a': 11, 'b': 22, 'c': 33, 'd': 44, 'e': 55}

4.2解包:

def test(a, b, c, d, e):
    print(a, b, c, d, e)
nums = (11, 22, 33, 44, 55)
test(*nums) #调用

结果:{'a': 11, 'b': 22, 'c': 311 22 33 44 553, 'd': 44, 'e': 55}

三、函数的返回值:函数中的return语句会在函数结束时将数据返回给程序,同时让程序回到函数被调用的位置继续执行。

def filter_sensitive_words(words):
    if "山寨" in words:
        new_words = words.replace("山寨", "**")
        return new_words
result = filter_sensitive_words("这个手机是山寨版吧!") #调用
print(result) 

结果:这个手机是**版吧!

如果函数使用return语句返回了多个值,那么这些值将被保存到元组中。

def move(x, y, step):
    nx = x + step
    ny = y - step
    return nx, ny     # 使用return语句返回多个值
result = move(100, 100, 60)  	
print(result)

结果:(160, 40)

四、变量作用域:变量并非在程序的任意位置都可以被访问,其访问权限取决于变量定义的位置,其所处的有效范围称为变量的作用域。

根据作用域的不同,变量可以划分为局部变量和全局变量。

1、局部变量:

函数内部定义的变量,只能在函数内部被使用

函数执行结束之后局部变量会被释放,此时无法再进行访问。

def test_one():
    number = 10    	              # 局部变量
    print(number) 	              # 函数内部访问局部变量
test_one()
print(number)     	              # 函数外部访问局部变量

2、全局变量:全局变量可以在整个程序的范围内起作用,它不会受到函数范围的影响。

number = 10         							# 全局变量
def test_one():
    print(number)   							# 函数内部访问全局变量
test_one()
print(number)       							# 函数外部访问全局变量

五、global和nonlocal关键字:函数内部无法直接修改全局变量或在嵌套函数的外层函数声明的变量,但可以使用global或nonlocal关键字修饰变量以间接修改以上变量。

number = 10                    # 定义全局变量
def test_one():
    global number              # 使用global声明变量number为全局变量
    number += 1
    print(number)
test_one()
print(number)
def test():
    number = 10
    def test_in():
        nonlocal number #在局部作用域中修改嵌套作用域中定义的变量
        number = 20
    test_in()
    print(number)
test()

六、递归函数:函数在定义时可以直接或间接地调用其他函数。若函数内部调用了自身,则这个函数被称为递归函数。

1、递归函数的执行可以分为以下两个阶段:

1.递推:递归本次的执行都基于上一次的运算结果。

2.回溯:遇到终止条件时,则沿着递推往回一级一级地把值返回来。

格式:

def函数名([参数列表]):

? if 边界条件:

? rerun 结果

? else:

? return 递归公式

七、匿名函数:匿名函数是一类无需定义标识符的函数,它与普通函数一样可以在程序的任何位置使用。Python中使用lambda关键字定义匿名函数,它的语法格式如下:

lambda <形式参数列表> :<表达式>

八、实例展示:

编写一个函数,可以接受任意多个数字 *xxx,返回元组() 要求:元组的第一个数字是所有数字的平均数sum()/len(),后面数字要比平均数大的所有数字[].append()

def receive(lst):
    li=[]
    avg=sum(lst)/len(lst)
    li.append(avg)
    for i in lst:
        if i>avg:
            li.append(i)
    return li
lst=list(map(int,input().split(" ")))
tp=tuple(receive(lst))
print(tp)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:15:03  更:2021-12-15 18:17:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:25:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码