10、python函数

前言:本文主要介绍python函数的定义和调用、函数的参数、函数的作用域、内置函数。

一、函数的定义和调用


1.函数的作用

对特定的一些功能进行封装,提高代码的重用率,进而提升开发的效率,格式:

def  函数名()
    # 函数体

2.函数名的命名规范

可以由字母、数字及下划线(_)组成,但不能用数字开头,且不能使用python中的关键字

函数命名的风格: 单词之间下划线隔开(python中函数命名推荐这种风格), 大驼峰小驼峰写法 ,如:UserName、userName英文单词首字母大写

3.函数的返回值:return

 return 表达式

1)函数的返回值是由return来决定的,return后面写什么,函数的返回值就是什么

2)如果函数中没有return,那么函数的返回值默认为 None

3)return 后面没有任何内容,返回值也是None

3)函数要返回多个数据,可以在return后面,每个数据之间用逗号隔开,调用函数之后接收到的是个元组形式的数据

注意:return的作用除了返回结果外,也可以用于结束函数的运行,只要函数中执行到return,就直接返回内容,跳出函数,return后面的代码就不会执行

4.调用函数

 函数名(),示例如下:

def func():
    print(‘python666‘)
    return "abc", 4444
    print("99999999999999999999")  # 该行不会被执行

res = func()
print(res)

运行结果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
python666
(‘abc‘, 4444)

Process finished with exit code 0

二、函数的参数


1.函数形参和实参

 定义的参数称为:形参

 调用实际传递的为:实参

2.参数传递的两种形式:

位置参数:按位置顺序进行传递

关键字参数:通过关键字指定传给某个参数

# 位置参数(按位置顺序进行传递)
def add_num(a, b, c):  # a,b是形参,没有真正的值,用于接收实参
    return a + b - c

res1 = add_num(67, 12, 1)  # 此时传入的67,12是实参
print(res1)

# 关键字参数(通过关键字指定传给某个参数)
res2 = add_num(b=34, a=12, c=11)
print(res2)

# 参数混用时,位置参数写最前面,关键字参数写在后面,不能重复传
res3 = add_num(30, c=12, b=12)
print(res3)

运行结果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
78
35
30

Process finished with exit code 0

3.函数定义的三种形参:

  • 必需参数  如:def add_num(a, b, c) ,a,b,c三个参数都必须要传
  • 默认参数(缺省参数) 如:def add_num(a, b, c=99) ,c是默认参数,可以传,可以不传(不传时直接使用c=99)
  • 不定长参数:如:def add_num(a, b, *args, **kwargs) ,其中a和b是必需参数,*args 可以不传,也可以传多个,它接收必需参数、

         默认参数完之外的位置参数,以元组的形式保存,**kwargs 可以不传,也可以传多个,接收必需参数、默认参数之外的关键字

         参数,以字典的形式保存

def test(a, b, c, *args, **kwargs):
    print("a的值", a)
    print("b的值", b)
    print("c的值", c)
    print("*args的值", args)
    print("**kwargs的值", kwargs)

va1 = test(11, 22, 33, 4, 3, 2)
va2 = test(11, 5, 6, 7, g=33, k=22, f=12)
print(va1, va2)

运行结果(有None是因为函数中没有返回值,调用了两次函数因此打印了两个None):

C:\software\python\python.exe D:/myworkspace/test/test/test.py
a的值 11
b的值 22
c的值 33
*args的值 (4, 3, 2)
**kwargs的值 {}
a的值 11
b的值 5
c的值 6
*args的值 (7,)
**kwargs的值 {‘g‘: 33, ‘k‘: 22, ‘f‘: 12}
None None

Process finished with exit code 0

扩展:不定长参数可以使用*对元组(列表也可以,但一般不用)进行拆包,**可以对字典进行拆包,拆包原理如下:

# 拆包
def func():
    return 11,22,33   # 当返回结果有多个值时,会以元组的形式返回

c1 = func()
print(c1)    # 返回的是一个元组(11,22,33)

a,b,c =func()   # 可以通过变量把返回的元组进行拆包,接收对应的值,a接收了11,b接收了22,c接收了33
print(a,b,c)   # 返回对应的元素11,22,33

运行结果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
(11, 22, 33)
11 22 33

Process finished with exit code 0

拆包在自动化测试中有很大的作用,如果不理解,可以动手多敲几遍,以下是拆包示例:

def func(a, b, c):
    print(‘这是‘, a)
    print(‘这是‘, b)
    print(‘这是‘, c)

# 利用*、**分别对元组、字典拆包:只能用在函数调用时使用
# 对元组进行拆包
func(*(1, 2, 3))

print(‘-------分割线-------‘)
tu = (4, 5, 6)
func(*tu)

print(‘-------分割线-------‘)
# 对字典进行拆包, 注意**kwargs接收的是接收必需参数、默认参数之外的关键字参数
# 因此字典的键要与函数的形参一致
dic = {‘a‘: 88, ‘b‘: 90, ‘c‘: 91}
func(**dic)

运行结果:

C:\software\python\python.exe D:/myworkspace/test/test/test.py
这是 1
这是 2
这是 3
-------分割线-------
这是 4
这是 5
这是 6
-------分割线-------
这是 88
这是 90
这是 91

Process finished with exit code 0

三、函数的作用域


1.全局变量

 直接定义在py文件(即模块)中的变量,叫全局变量,在该文件中任何地方都可以使用

2.局部变量

 在函数内部定义的变量,叫做局部变量,只能在该函数内部使用,函数外部无法使用

3.声明局部变量

 关键字:global  在函数内部声明全局变量

 变量的查找过程:由内到外(先找函数自身的,没有再去外面找)

 如果要在外部使用函数内部定义的局部变量,需要声明该变量,简单来说就是告诉程序,这个变量在这个模块内都能使用

name = "张三"     # 定义一个全局变量

def func():
    # global a  # 如果要声明全局变量,要加上这句
    a = 100     # 定义一个局部变量
    print(a)
    print(name)

func()   # 调用函数
print("------分割线-----")
print(name)     # 全局变量哪里都能使用
print(a)     # 这是一个局部变量,打印a运行会报错说a没有被定义,如果要使用a就要声明a为全局变量

print("------分割线-----")
aa = 10
def func():
    print(aa)    # 变量的查找过程:由内到外(先找自身的,没有再去外面找)
func()

运行结果(因为报错了,所以后面的aa没有打印出来,只要声明全局变量就不会报错):

C:\software\python\python.exe D:/myworkspace/test/test/test.py
100
张三
------分割线-----
张三
Traceback (most recent call last):
  File "D:/myworkspace/test/test/test.py", line 12, in <module>
    print(a)     # 这是一个局部变量,打印a运行会报错说a没有被定义,如果要使用a就要声明a为全局变量
NameError: name ‘a‘ is not defined

Process finished with exit code 1

四、python内置函数



内置函数就是python编程语言中预先已经定义的函数,直接调用即可,常用的内置函数如下:

  • len():获取 列表\字符串\元组\字典 中的元素总数量(数据的长度)
  • eval():识别字符串中的python表达式
  • zip(): 聚合打包
  • max():获取数据中元素的最大值
  • min():获取数据中元素的最小值
  • sum():对元素进行求和

 更多的内置函数有兴趣的可以在菜鸟教程中查看,链接:https://www.runoob.com/python/python-built-in-functions.html

作者:miki_peng

出处:https://www.cnblogs.com/miki-peng

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,请大家尊重原创,如要转载,请在文章页面明显位置注明出处,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/miki-peng/p/12229199.html

时间: 2024-10-13 16:23:03

10、python函数的相关文章

10.python函数深入专题

对于默认参数,   其 仅仅会在函数生成的时候生成一次.  并不会在函数每一次调用的时候都生成一次. python的lambda函数也可以有默认参数 python中闭包中的变量在只有才其内部的函数被调用的时候才会向上查询. 所以可以用如下的hack:

Python学习-10.Python函数定义(二)

在Python中定义函数的时候,可以使用参数默认值的方式定义函数 例子: 1 def welcome(who,state='is',action='talking'): 2 print(who,state,action) 调用函数: 1 welcome('Tom') 输出Tom is talking 1 welcome('Tom','was') 输出Tom was talking 1 welcome('Tom',action='sleeping') 输出Tom is sleeping 可见,在参

10. Python函数的进阶

?. 函数参数--动态传参 之前我们说过了传参, 如果我们需要给?个函数传参, ?参数?是不确定的. 或者我给?个 函数传很多参数, 我的形参就要写很多, 很?烦, 怎么办呢. 我们可以考虑使?动态参数. 形参的第三种: 动态参数 动态参数分成两种: 1. 动态接收位置参数 ?先我们先回顾?下位置参数, 位置参数, 按照位置进?传参 现在问题来了. 我想吃任意的食物. 数量是任意的, 食物也是任意的. 这时我们就要?到 动态参数了. 在参数位置编写*表?接收任意内容 动态接收参数的时候要注意:

2.3.10 Python 函数进阶

名称空间 又名 name space. 说明:若变量 x=1, 1存放于内存中,那名字x存放在哪里? 名称空间正是存放名字x与1绑定关系的地方 名称空间共三种: locals: 是函数内的名称空间,包括局部变量和形参 globals: 全局变量,函数定义所在的模块的名字空间 builtins: 内置模块的名字空间 不同变量的作用域不同,就是由于这个变量所在的命名空间决定的 作用域的范围 全局范围:全局存活,全局有效 局部范围:临时存活,局部有效 查看作用域的方法 globals(),locals

10分钟学会 Python 函数基础知识

一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行.Python中的函数在其他语言中也叫做过程或子例程,那么这些被包装起来的语句通过一个函数名称来调用. 有了函数,我们可以在很大程度上减少复制及粘贴代码的次数了(相信很多人在刚开始时都有这样的体验).我们可以把相同的代码可以提炼出来做成一个函数,在需要的地方只需要调用即可.那么,这样就提高了代码的复用率了,整体代码看起来比较简练,没有那么臃肿了. 函数在Python中是最基本的程序结构,用来最大化地

10分钟学会Python函数基础知识

看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行.Python中的函数在其他语言中也叫做过程或子例程,那么这些被包装起来的语句通过一个函数名称来调用. 有了函数,我们可以在很大程度上减少复制及粘贴代码的次数了(相信很多人在刚开始时都有这样的体验).我们可以把相同的代码可以提炼出来做成一个函数,在需要的地方只需要调用即可.那么,这样就提高了代码的

python函数(6):内置函数和匿名函数

我们学了这么多关于函数的知识基本都是自己定义自己使用,那么我们之前用的一些函数并不是我们自己定义的比如说print(),len(),type()等等,它们是哪来的呢? 一.内置函数 由python内部定义好我们可以直接调用的函数就叫内部函数.python一共给我们68个内置函数: abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() as

Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

python 函数

函数的定义 函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 创建函数 def 函数名 (参数列表) 函数体 例如: def sum1(a,b): c = a + b return c e=1 f=2 print (sum1(e,f)) 首先def 是定义函数名 sum1是函数名 括号中的a, b是函数的参数,是对函数的输入.参数可以有多个,也可以完全没有(但括号要保留). c = a +