| |
|
开发:
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、格式化输出与%百分号print("%d%%及格" % (50)) 2、字符串切片字符串切片秘籍:只顾头来尾不管,步长为正则正向移动(从左向右),步长为负,则逆向移动(从右向左) 定义一个字符串str1 = 'abcdefg',使用切片截取字符串str1[3::-2],求返回结果:'db' 3、字典的定义字典中的key可以是很多数据类型(不可变数据类型 => 整型、浮点型、字符串、元组) ?在字典中,如果key是数字类型,如果两个值相等,则后面这个key会替换前面这个key的value值 二、Python中函数1、函数存在的意义① 代码重复使用 ② 模块化编程(模块化编程的核心就是函数,一般是把一个系统分解为若干个功能,每个功能就是一个函数)
2、函数的定义所谓的函数就是一个被命名的、独立的、完成特定功能的代码段(一段连续的代码),并可能给调用它的程序一个返回值。 被命名的:在Python中,函数大多数是有名函数(普通函数)。当然Python中也存在没有名字的函数叫做匿名函数。 独立的、完成特定功能的代码段:在实际项目开发中,定义函数前一定要先思考一下,这个函数是为了完成某个操作或某个功能而定义的。(函数的功能一定要专一) 返回值:很多函数在执行完毕后,会通过return关键字返回一个结果给调用它的位置。 基本语法: def 函数名称([参数1, 参数2, ...]): ? ?函数体 ? ... ? [return 返回值] 3、函数的调用在Python中,函数和变量一样,都是先定义后使用。 # 定义函数 def 函数名称([参数1, 参数2, ...]): ? ?函数体 ? ... ? [return 返回值] ? # 调用函数 函数名称(参数1, 参数2, ...) 4、函数定义的原则函数的设计原则“高内聚、低耦合”,函数执行完毕后,应该主动把数返回给调用处,而不应该都交由print()等函数直接输出。 # 定义一个函数,拥有name参数,同时函数执行完毕后,拥有一个return返回值 def greet(name): ? ?# 执行一系列相关操作 ? ?return name + ',您好' ? # 调用函数 # 见到了张老师,打一声招呼 print(greet('老张')) # 见到了李老师,打一声招呼 print(greet('老李')) # 见到了王老师,打一声招呼 print(greet('老王')) 5、return返回值当函数中需要返回多个内容时,可以直接返回一个元组。 def size(num1, num2): ? ?jia = num1 + num2 ? ?jian = num1 - num2 ? ?cheng = num1 * num2 ? ?chu = num1 / num2 ? ?return jia, jian, cheng, chu ? ? # 调用size方法 print(size(20, 5)) 6、Python函数中的说明文档① 定义函数的说明文档 def add_student(): ? ? ? ?""" 函数的说明文档:add_student方法不需要传递任何参数,其功能就是实现对通讯录的增加? ? ? ? 操作 """ ? ? ? ? pass ? ② 使用help(函数名称)可以查看函数的说明。 help(函数名称) 7、函数的嵌套函数嵌套调用指的是一个函数里面又调用了另外一个函数。 三、变量的作用域1、什么是变量的作用域变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用),主要分为两类:全局作用域与局部作用域。 其实作用域的划分比较简单,在函数内部定义范围就称之为局部作用域,在函数外部(全局)定义范围就是全局作用域 # 全局作用域 def func(): # 局部作用域 2、局部变量与全局变量在Python中,定义在函数外部的变量就称之为全局变量;定义在函数内部变量就称之为局部变量。 # 定义在函数外部的变量(全局变量) num = 10 # 定义一个函数 def func(): # 函数体代码 # 定义在函数内部的变量(局部变量) num = 100 3、变量作用域的作用范围全局变量:在整个程序范围内都可以直接使用 str1 = 'hello' # 定义一个函数 def func(): # 在函数内部调用全局变量str1 print(f'在局部作用域中调用str1变量:{str1}') # 直接调用全局变量str1 print(f'在全局作用域中调用str1变量:{str1}') # 调用func函数 func() 局部变量:在函数的调用过程中,开始定义,函数运行过程中生效,函数执行完毕后,销毁 # 定义一个函数 def func(): # 在函数内部定义一个局部变量 num = 10 print(f'在局部作用域中调用num局部变量:{num}') # 调用func函数 func() # 在全局作用域中调用num局部变量 print(f'在全局作用域中调用num局部变量:{num}') 4、global关键字如果有一个数据,在函数A和函数B中都要使用,可以将这个数据存储在一个全局变量里面。 这个会产生一个问题:我们能不能在局部作用域中对全局变量进行修改呢? # 定义全局变量num = 10 num = 10 # 定义一个函数func def func(): # 尝试在局部作用域中修改全局变量 num = 20 # 调用函数func func() # 尝试访问全局变量num print(num) 最终结果:弹出10,所以由运行结果可知,在函数体内部理论上是没有办法对全局变量进行修改的,所以一定要进行修改,必须使用 # 定义全局变量num = 10 num = 10 # 定义一个函数func def func(): # 尝试在局部作用域中修改全局变量 global num num = 20 # 调用函数func func() # 尝试访问全局变量num print(num) 5、多函数之间数据的共享# 定义全局变量 info = [] # 定义funcA函数:向全局变量中添加信息 def funcA(): # 使用global声明全局变量 global info # 向info全局变量中添加数据 info.append({...}) # 定义funcB函数:查询功能,需要共享全局作用域中的通讯录信息 def funcB(): # 使用global声明全局变量 global info # 共享全局作用域中的全局变量info for i in info: ... 四、函数的参数进阶def func(参数1, 参数2, 参数3): ... func(10, 20, 30) 1、函数的参数在函数定义与调用时,我们可以根据自己的需求来实现参数的传递。在Python中,函数的参数一共有两种形式:① 形参 ② 实参 ==形参:在函数定义时,所编写的参数就称之为形式参数== ==实参:在函数调用时,所传递的参数就称之为实际参数== def greet(name): # name就是在函数greet定义时,所编写的参数(形参) return name + ',您好' # 调用函数 name = '老王' greet(name) # 在函数调用时,所传递的参数就是实际参数
2、函数的参数类型(调用)☆ 位置参数理论上,在函数定义时,我们可以为其定义多个参数。但是在函数调用时,我们也应该传递多个参数,正常情况,其要一一对应。 def user_info(name, age, address): print(f'我的名字{name},今年{age}岁了,家里住在{address}') # 调用函数 user_info('Tom', 23, '美国纽约')
☆ 关键词参数(Python特有)函数调用,通过“键=值”形式加以指定。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求。 def user_info(name, age, address): print(f'我的名字{name},今年{age}岁了,家里住在{address}') # 调用函数(使用关键词参数) user_info(name='Tom', age=23, address='美国纽约') 3、函数定义时缺省参数(参数默认值)缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)。 def user_info(name, age, gender='男'): print(f'我的名字{name},今年{age}岁了,我的性别为{gender}') user_info('李林', 25) user_info('振华', 28) user_info('婉儿', 18, '女')
4、不定长参数不定长参数也叫可变参数。用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。此时,可用==包裹(packing)位置参数==,或者==包裹关键字参数==,来进行参数传递,会显得非常方便。 ☆ 不定长元组(位置)参数def user_info(*args): # print(args) # 元组类型数据,对传递参数有顺序要求 print(f'我的名字{args[0]},今年{args[1]}岁了,住在{args[2]}') # 调用函数,传递参数 user_info('Tom', 23, '美国纽约') ☆ 不定长字典(关键字)参数def user_info(**kwargs): # print(kwargs) # 字典类型数据,对传递参数没有顺序要求,格式要求key = value值 print(f'我的名字{kwargs["name"]},今年{kwargs["age"]}岁了,住在{kwargs["address"]}') # 调用函数,传递参数 user_info(name='Tom', address='美国纽约', age=23)
综上:无论是包裹位置传递还是包裹关键字传递,都是一个组包的过程。 Python组包:就是把多个数据组成元组或者字典的过程。 案例:Python中数据的传递案例 def func(*args, **kwargs): print(args) print(kwargs) # 定义一个元组(也可以是列表) tuple1 = (10, 20, 30) # 定义一个字典 dict1 = {'first': 40, 'second': 50, 'third': 60} # 需求:把元组传递给*args参数,字典传递给**kwargs # ① 如果想把元组传递给*args,必须在tuple1的前面加一个*号 # ② 如果想把字典传递给**kwargs,必须在dict1的前面加两个**号 func(*tuple1, **dict1) 五、Python拆包(元组和字典)1、什么是拆包Python拆包:就是把元组或字典中的数据单独的拆分出来,然后赋予给其他的变量。 拆包: 对于函数中的多个返回数据, 去掉元组, 列表 或者字典直接获取里面数据的过程。 2、元组的拆包过程def func(): # 经过一系列操作返回一个元组 return 100, 200 # tuple元组类型的数据 # 定义两个变量接收元组中的每个数组(拆包) num1, num2 = func() # 打印num1和num2 print(num1) print(num2) 3、字典的拆包过程记住:字典拆包,只能把每个元素的key拆出来 dict1 = {'name':'小明', 'age':18} # 拆包的过程(字典) a, b = dict1 print(a) print(b) # 获取字典中的数据 print(dict1[a]) print(dict1[b]) 本期的笔记分享就到这里啦,下期分享函数的进阶! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/26 3:00:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |