百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python02_函数(python函数csdn)

off999 2024-10-18 08:00 30 浏览 0 评论

一、函数的作用

  • 可以具体完成某个功能
  • 可以重复使用(函数就是存储运行过程)

二、函数的定义

关键字 def

def 函数名(参数1,参数2,参数3):

函数体

return 表达式

下面是一个计算的简单函数,名为add():

def add():
    a = 1 + 6 * 4
    b = a + 4
    print(b)
add()
  • 使用关键字def来告诉Python要定义一个函数
  • 向Python指出了函数名,函数名为add():,定义以冒号结尾
  • def add():后面的所有缩进行构成了函数体,描述了函数是做什么的
  • 函数要先定义,才能调用
  • 函数的调用必须加括号

要使用这个函数,可调用它。函数调用让Python执行函数的代码,由于add()函数没有指定任何参数,所以要调用函数,直接指定函数名即可。

三、函数的类型

1、函数的位置参数

可以通过函数名后面的括号传递参数,下面是一个带有位置参数的函数,名为run_cases():

def run_cases(num):
    for case in range(num):
        print(f'正在执行第{}条用例')
    # 调用函数传入的参数其实就是去给函数定义的时候的变量去赋值
run_cases(10)

设置位置参数的原则:

  • 函数当中存储多行代码:观察哪些数据会变化,则把它作为参数

关于函数的参数传递,需要注意如下几点:

  • 调用函数传递的参数个数一定要跟函数定义的参数个数一致,位置要保持一致,顺序要保持一致,否则会报错
  • 注意函数体里面参数的类型,要输入正确的参数类型,否则会报错
  • 函数的形式参数和实际参数要配对,一一对应
  • 函数调用后,如果有变量,那其实就是给变量赋值

形式参数与实际参数的区别:

  • 形式参数:函数定义的时候的参数,就是个变量
  • 实际参数:函数调用的时候传入的参数,就是个值

2、函数的关键字参数

关键字参数指的是在调用具有参数默认值的函数时,使用参数的关键字来指定为哪个参数赋值。下面是一个带有关键字参数的函数,名为run_cases():

def run_cases(a,b,c):
    for case in range(a):
        print(f'正在执行第{}条用例')
    print(b + c)
run_cases(a=5,c=3,b=4)

关键字参数的作用:

  • 在传实际参数的时候,即时说明实际参数的意义

位置参数和关键字参数的混合时的注意点:

  • 位置参数一定要在关键字参数的前面,避免冲突
  • 不能对一个参数进行多次赋值
  • 不能使用未知关键字参数

3、函数的默认参数

默认参数,在定义函数时给予默认值,调用函数时不需要给予默认参数。

def 函数名(...,形参名,形参名=默认值)

代码块

注意??

  • 在使用此格式定义函数时,指定有默认值的形式参数必须在所有没默认值参数的最后,否则会产生语法错误。
def run_cases(a,b,c=3)
    for case in range(a):
        print(f'正在执行第{case}条用例')
    print(b+c)
# 不给c传实际参数
# 默认参数的作用:可以不传参数
run_cases(1,4)

4、函数的动态参数

预先不知道函数需要接受多少个实参,所以Python中有一个动态参数的概念,随便你传递多少个的参数给函数,它都全盘接受,并在函数体内做进一步处理。

def add(*args):
    print(args)
add(1,2,3,4)

打印出来的结果都是元组类型,那么无论你传递多少个参数进来,它都会把这些参数存储到一个元组里面。比如可以去计算任意个数数字的总和:

def add(*args):
    sum = 0
    for item in args:
        sum += item
    print(sum)
add(1,2,3,4)

大家应该充分体验到了动态参数带来的便利,当我们面对不知道要传递多少个参数的函数时,就可以利用动态参数这个用法。

5、带有关键字的动态参数

带有关键字的动态参数,与普通动态参数的区别就是:带有关键字,且必须指定关键字,否则识别不了。

def run(a,**b):
    # b 就是把剩下的关键字参数全部都放到一起(字典)
    print(a)
    print(b)  
run(3,H='fuyao',Z='zhishang')

传入的带有key值的参数,都被转成了字典,所以当你传入的值不确定个数的时候又要组成字典,那么我们就可以用这种形式去做处理。

6、位置参数、默认参数、动态参数、关键字动态参数的混合使用

def add(a,b=4,c=5,*args,**kwargs):
    print('a+b+c的结果是:',a+b+c)
    sum = 0
    # args 就是把剩下的位置参数全部都放到一起(元组)
    for item in args:
        sum += item
    print('动态参数的累加结果是:',sum)
    # kwargs 就是把剩下的关键字参数全部都放到一起(字典)
    print('关键字动态参数是:',kwargs)
# 调用函数
add(1,2,3,4,5,6,x=1,y=2)

根据传递的参数,我们可以看到是优先处理位置参数,然后剩余的参数传递给args,带有关键字的参数传给kwargs。

7、函数的拆包

然而现实中,自动化测试用例中有很多数据(url、方法、参数等),存那么多变量不太现实,那我们可以将多个数据存在一个变量中,此时就会用到拆包了。

1)*args:把元组中的数据进行拆包,也就是把元组中的数据拆成单个数据。

def run(a,b,c):
    print(a)
    print(b)
    print(c)
 
args = [6,7,8]
# *args 是把所有的列表/元组元素拆分,脱衣服
run(*args)

2)**kwargs:用来接收key=value这种类型的命名参数,把字典中的数据进行拆包。

def run(a,b,c):
    print(a)
    print(b)
    print(c)
 
# 关键字参数调用
kwargs = {"a":6,"b":7,"c":8}
# **是把字典转化成关键字参数的
run(**kwargs)   

8、函数的返回值

上面我们写的函数,调用函数的结果都直接输出在控制台,其实并非所有的函数都会直接输出在控制台,如果我们要拿到这个函数的运行结果,那么就需要用return语句,将函数的运行结果返回来,由你去做进一步的处理。

def run_cases(a=1,b=3,c=3):
    for case in range(a):
        print(f'正在执行第{case}条用例')
    print(b + c)
    return 5
    # 不会执行下面这条语句
    print('函数执行完了吗')
print(run_cases())

返回值需要注意:

  • 如果你想拿到函数的运行结果,那么必须用return语句。
  • return后面的语句,都不会再执行,可以自己去尝试下。

9、函数的局部变量和全局变量

Python中的全局变量与局部变量的区别:全局变量与局部变量两者的本质区别就是在于作用域。

全局变量是在整个py文件中声明,全局范围内都可以访问;局部变量是在某个函数中声明,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就会报错。

一般全局变量会用大写字母来标志,如果是局部变量,就会用小写字母来标志。

  • 全局变量在函数内部和外部都可以调用,局部变量只能在函数内调用,否则会报错。
A = 66    # 全局变量
def add():
    a = 100    # 局部变量
    print(a+A)
 
add() # 打印结果是166
print(A) # 打印结果是66
print(a) # 报错:NameError:name 'a' is not defined
  • 函数的外部无法直接获取局部变量,可以间接获取,通过return(返回值)。
a = 1    # 全局变量
def run():
    b = 2    # 局部变量
    print(b)
    return b
print(a)
run()
  • 如果全局变量和局部变量不一样,那么会优先调用局部变量。
A = 66   # 全局变量
def add():
    a = 100 # 局部变量
    print(A+A)
 
add() # 打印结果是200
print(A) # 打印结果是66
  • 如果想在函数内部改变全局变量的值,那么在全局变量之前加global关键字。
A = 66   # 全局变量
def add():
    global A
    A = 100 # 局部变量
    print(A+A)
 
add() # 打印结果是200
print(A) # 打印结果是100
  • 如果全局变量是列表类型,那么我们可以通过append等列表方法去对列表进行修改,否则修改不成功。
list_1 = ['hello',20]
def add():
    list_1.append(99)
    print(list_1)
add()    # 打印结果是['hello',20,99]
print(list_1)    # 打印结果是['hello',20,99]

10、内部函数

内置函数:Python官方自带的函数,不需要自己定义。

  • eval() 函数用来执行一个字符串表达式,并返回表达式的值。

可看以下示例:对表达式的结果进行计算,返回计算后的值

a = "1 + 5 + 3"
print(eval(a))  # 脱掉字符串左右两边的衣服

将输入的字符串转为对应的数据类型,列表、元组、字典等数据类型都可以使用这种方式输入

response = '{"username":"sun","age":16}'
print(type(response))
a = eval(response)
print(type(a))
  • sum() 方法对序列进行求和计算,并返回计算结果。
a = sum([3,4,5,6])
print(a)

相关推荐

python入门到脱坑经典案例—清空列表

在Python中,清空列表是一个基础但重要的操作。clear()方法是最直接的方式,但还有其他方法也可以实现相同效果。以下是详细说明:1.使用clear()方法(Python3.3+推荐)...

python中元组,列表,字典,集合删除项目方式的归纳

九三,君子终日乾乾,夕惕若,厉无咎。在使用python过程中会经常遇到这四种集合数据类型,今天就对这四种集合数据类型中删除项目的操作做个总结性的归纳。列表(List)是一种有序和可更改的集合。允许重复...

Linux 下海量文件删除方法效率对比,最慢的竟然是 rm

Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...

数据结构与算法——链式存储(链表)的插入及删除,

持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持上篇文章我们讲述了链表的基本概念及一些查找遍历的方法,本篇我们主要将一下链表的插入删除操作,以及采用堆栈方式如何创建链表。链...

Python自动化:openpyxl写入数据,插入删除行列等基础操作

importopenpyxlwb=openpyxl.load_workbook("example1.xlsx")sh=wb['Sheet1']写入数据#...

在Linux下软件的安装与卸载(linux里的程序的安装与卸载命令)

通过apt安装/协助软件apt是AdvancedPackagingTool,是Linux下的一款安装包管理工具可以在终端中方便的安装/卸载/更新软件包命令使用格式:安装软件:sudoapt...

Python 批量卸载关联包 pip-autoremove

pip工具在安装扩展包的时候会自动安装依赖的关联包,但是卸载时只删除单个包,无法卸载关联的包。pip-autoremove就是为了解决卸载关联包的问题。安装方法通过下面的命令安装:pipinsta...

用Python在Word文档中插入和删除文本框

在当今自动化办公需求日益增长的背景下,通过编程手段动态管理Word文档中的文本框元素已成为提升工作效率的关键技术路径。文本框作为文档排版中灵活的内容容器,既能承载多模态信息(如文字、图像),又可实现独...

Python 从列表中删除值的多种实用方法详解

#Python从列表中删除值的多种实用方法详解在Python编程中,列表(List)是一种常用的数据结构,具有动态可变的特性。当我们需要从列表中删除元素时,根据不同的场景(如按值删除、按索引删除、...

Python 中的前缀删除操作全指南(python删除前导0)

1.字符串前缀删除1.1使用内置方法Python提供了几种内置方法来处理字符串前缀的删除:#1.使用removeprefix()方法(Python3.9+)text="...

每天学点Python知识:如何删除空白

在Python中,删除空白可以分为几种不同的情况,常见的是针对字符串或列表中空白字符的处理。一、删除字符串中的空白1.删除字符串两端的空白(空格、\t、\n等)使用.strip()方法:s...

Linux系统自带Python2&yum的卸载及重装

写在前面事情的起因是我昨天在测试Linux安装Python3的shell脚本时,需要卸载Python3重新安装一遍。但是通过如下命令卸载python3时,少写了个3,不小心将系统自带的python2也...

如何使用Python将多个excel文件数据快速汇总?

在数据分析和处理的过程中,Excel文件是我们经常会遇到的数据格式之一。本文将通过一个具体的示例,展示如何使用Python和Pandas库来读取、合并和处理多个Excel文件的数据,并最终生成一个包含...

【第三弹】用Python实现Excel的vlookup功能

今天继续用pandas实现Excel的vlookup功能,假设我们的2个表长成这样:我们希望把Sheet2的部门匹在Sheet1的最后一列。话不多说,先上代码:importpandasaspd...

python中pandas读取excel单列及连续多列数据

案例:想获取test.xls中C列、H列以后(当H列后列数未知时)的所有数据。importpandasaspdfile_name=r'D:\test.xls'#表格绝对...

取消回复欢迎 发表评论: