当前位置:网站首页>学习总结week3_1函数
学习总结week3_1函数
2022-08-05 05:13:00 【非鱼丶丶】
python函数
一、函数作用
当一个功能需要反复使用的时候,将此功能编写成函数,后续需要此功能时,调用此函数即可
1.什么是函数
实现某一特定功能的代码封装
实现某一或者某类功能的代码打成一个包,以后在需要这包中的这段代码对应的功能的时候,使用该函数即可
2…函数的分类
根据这个函数是由谁创建的,我们将函数分为系统函数;自定义函数
1)系统 - 系统创建的函数(python本身创建的函数)(print / input 等)
2)自定义 - 有程序员自己创建的函数
语法:
def 函数名(形参列表):
函数说明文档
函数体
3.说明
1)def - 关键字;固定写法
2)函数名 - 自命名(两个要求,三个规范)
3)() - 固定写法
4)形参列表 - 以’变量名1, 变量名2,变量名3,…'的形式存在,根据情况变量的数据可以为0
作用:将函数外部的数据传递到函数里面
确定形参的方法:看实现函数的功能需不需要额外的数据,需要多少个
5)函数说明文档 - 多行注释
6)函数体 - 结构上,和def保持一个缩进的一条或者多条语句
逻辑上,函数体就是实现函数功能的代码
def dict_exchange(dict1):
""" (功能说明区):交换字典的键,值 :param dict1: (参数说明区) :return: (返回值说明区) """
dict2 = {
}
for x in dict1:
c = dict1[x]
dict2.setdefault(c, x)
print(dict2)
dict_exchange({
'a': 1, 'b': 2, 'c': 3, 'd': 4})
dict_exchange({
'a': 1, 'b': 2})
# 练习:定义一个函数统计字符串中数字字符的个数
def count_numbers(str1):
count = 0
for x in str1:
if x.isdigit():
count += 1
print(count)
# 练习2:定义一个函数,将两个字符串中所有的大写字母合并成一个新的字符串
def merge_upper(str1, str2):
str3 = ''
for x in str1 + str2:
if x.isupper():
str3 += x
print(str3)
# 练习3:定义一个函数,删除列表中所有的空值
# (包括None,和其他空值(比如空字符串、空列表、空元组等))
def delete_null(list1):
for x in list1[:]:
if not x and x != 0:
list1.remove(x)
print(list1)
二、调用函数
1.语法:函数名(实参列表)
说明:
1.函数名 - 需要哪个函数对应的功能,就调用那个,想要调用哪个,就写那个函数名
函数名必须是已经定义过函数的函数名
2.() - 固定写法
3.实参列表 - 以’数据1, 数据2, 数据3’的形式存在,每一个数据就是一个实参
实参对应的数据可以是任何有结果的表达式 / 实参是用来给形参赋值的,在提供实参时要和形参保持一一对应
重要结论:定义函数不会执行函数体,调用才会执行
2.函数调用过程
每次在调用函数时,执行步骤是:
1.回到函数定义的位置 def在哪行,先回到那行
2.传参(用实参给形参赋值,要一一对应,每个形参都要有值)
3.执行函数体
4.确定函数返回值
5.回到函数调用的位置,接着往后执行
3.位置参数和关键字参数
根据实参的提供方式将实参分为位置参数和关键字参数两种
1.位置参数:以’实参1, 实参2, 实参3,…'的形式存在,让实参和形参从位置上一一对应
2.关键字参数:以’形参1 = 实参1, 形参2 = 实参2, …‘的形式存在,通过’='将两者对应,顺序不影响
注意:两者可以一起用,但是必须保证位置参数在关键字参数的前面
4.参数默认值
定义函数的时候可以通过’形参 = 数据’的方式,给形参赋默认值:
若形参有默认值,在调用函数时,有默认值的参数可以不用传参
在调用时,若是输入位置参数,按顺序替换
注意:在定义函数的时候,如果一个函数有的参数有默认值,有的没有,没有默认值的形参必须在有默认值的形参的前面
def func1(x=10, y=20, z=30):
print(f'x:{
x}, y:{
y}, z:{
z}')
func1(100)
func1(z=300)
func1(100, 200)
def func2(x, y, z=10):
print(x, y, z)
func2(10, 10)
5.参数类型说明
对于无默认值参数的类型说明,直接在形参后面加: 类型名
有默认值的参数,默认值数据对应的类型就是这个形参的类型
返回值对应的类型说明 def func3(x: str) -> str:
def func3(x: str):
print(x.count('0'))
6.*对应的不定长参数
1)定义函数的时候,如果在某一个形参前面加*,那么这个形参就会变成一个不定长参数,可以接受多个实参
带 * 的不定长参数的本质是一个元组,他接受到的所有的实参是这个元组的元素
def sum_n(*num):
nums = 0
for x in num:
nums += x
print(nums)
sum_n(11, 22, 33)
sum_n(11)
2)定义函数的时候单独使用 * :调用函数时,强迫*后面的实参必须要用关键字参数传参
def func4(x, *, y, z):
print(x, y, z)
func4(10, y=10, z=10)
边栏推荐
猜你喜欢

Qt produces 18 frames of Cupid to express his love, is it your Cupid!!!

【过一下 17】pytorch 改写 keras
![[Study Notes Dish Dog Learning C] Classic Written Exam Questions of Dynamic Memory Management](/img/0b/f7d9205c616f7785519cf94853d37d.png)
[Study Notes Dish Dog Learning C] Classic Written Exam Questions of Dynamic Memory Management

Flutter real machine running and simulator running

ESP32 485 Illuminance

Using QR codes to solve fixed asset management challenges

逆向理论知识4

【过一下12】整整一星期没记录

Flutter学习5-集成-打包-发布

shell函数
随机推荐
位运算符与逻辑运算符的区别
MySQL中控制导出文件后变为了\N有什么解决方案吗?
开发一套高容错分布式系统
Flutter学习三-Flutter基本结构和原理
【微信小程序】WXML模板语法-条件渲染
RL强化学习总结(一)
1.3 mysql批量插入数据
第四讲 back propagation 反向传播
redis复制机制
Flutter real machine running and simulator running
Requests the library deployment and common function
uboot开启调试打印信息
Wise Force Deleter强制删除工具
LAB Semaphore Implementation Details
Multi-threaded query results, add List collection
Flutter learning 2-dart learning
[cesium] 3D Tileset model is loaded and associated with the model tree
Flex layout frog game clearance strategy
LeetCode: 1403. Minimum subsequence in non-increasing order [greedy]
逆向理论知识4