首页 > 编程语言 >Python 函数

Python 函数

时间:2024-12-22 21:32:22浏览次数:7  
标签:函数 Python variable 参数 print 全局变量 def

一,函数的定义与调用:

当你在写程序时,有一个模块一直用的是相同的的代码,所以我们为了提高代码的效率和代码的重用,所以把具有独立的代码块组织为一个小模块,我们把他叫为函数。在 Python 中,函数是一段可重复使用的代码块,用于执行特定的任务。它通过def关键字来定义函数

def greet():
    print("Hello!")

解释一下上面代码:

        这里def是定义函数的关键字,greet是函数名,后面的括号()可以包含参数(这个函数没有参数),最后的冒号:表示函数体的开始。函数体是缩进的代码块,这里只有一行代码print("Hello!"),它会在函数被调用时执行。

调用函数:我们把函数定义好(功能完善)后,需要让他执行(当然如果你不需要他,你不调用他就不会运行的),所以我们就需要调用它

调用的方法:函数名(),就已经调用成功了

#定义函数
def greet():
    print("Hello!")

#调用函数 
greet()

#输出结果:
Hello!

!注意:

每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了

当然了如果函数中执行到了return也会结束函数

二,函数参数

函数可以有零个或多个参数。参数是传递给函数的值,它们允许函数接受输入

定义时小括号中的参数,用来接收参数用的,称为 “形参

调用时小括号中的参数,用来传递给函数用的,称为 “实参

def greet(a,b):
    num=a+b
    print(num)

greet(55,66)

默认参数值调用函数时,缺省参数的值如果没有传入,则取默认值

def power(base, exponent = 2):
    print(base ** exponent)

power(3)

power(3,3)

代码分析:

这个函数计算一个数的幂。如果只传入一个参数,如power(3),那么exponent会使用默认值2,函数返回3**2 = 9。如果传入两个参数,如power(3, 3),则会按照传入的值计算3**3 = 27

可变参数:有时候不确定会传入多少个参数,可以使用可变参数。例如*args用于接收任意数量的位置参数,这些参数会被打包成一个元组!

注意: 加了星号(*)的变量args会存放所有未命名的变量参数,args为元组

            加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.

def print_args(*args):
    for arg in args:
        print(arg)

print_args(1,2,3)

调用print_args(1, 2, 3)时,123会被打包成一个元组(1, 2, 3),然后在函数内部通过循环打印出来。

注意当你用的是(*age)时,不能用名字传参,只能用位置传参

def ko(a,b,c='xixi',*ke,**ki):
    print(a)
    print(b)
    print(c)
    print(ke)
    print(ki)

ko(ke=(3,4,5),a=1,b=2,ki="name='frank'")  #名字传参会导致(*ke)里面没有数据
ko(1,2,3,4,5,ki="name='frank'")           #位置传参,成功

**kwargs用于接收任意数量的关键字参数,这些参数会被打包成一个字典。

def print_kwargs(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

print_kwargs(name='Alice', age=25)

调用print_kwargs(name='Alice', age=25)时,关键字参数会被打包成字典{'name': 'Alice', 'age': 25},然后在函数内部通过循环打印出键值对。

注意!当你需要用字典的名字来当函数的参数时(函数名(**字典名))

def an(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")    
my_an={'name':"Alice", 'age':25}
an(**my_an)


三,函数的返回值:

函数可以返回一个或多个值。使用return关键字来返回结果。

可以理解为:我让小弟帮我干活,当小弟干完之后,我需要他给我今天的营业报表,此时营业报表就是要返回(return)给我的值

def divide(a, b):
    if b == 0:
        return None
    else:
        return a / b

# 调用函数
result = divide(4, 0)
print(result)  # 这将打印出 None

这个函数用于计算两个数的除法。如果除数b0,则返回None,否则返回a除以b的结果。函数也可以返回多个值,例如:

def get_name_and_age():
    name = "Bob"
    age = 30
    return name, age

result = get_name_and_age()
print(result)

调用这个函数result = get_name_and_age()时,result会得到一个包含两个元素的元组('Bob', 30)

小案例:封装⼀个函数,参数有两个num1,num2,求两个数的四则运算结果。思路:(四则运算:加、减、乘、除)(当然要返回多个值)

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))

四:函数的说明文档:

说明文档的作用:可以想到与程序员写程序的时候,代码多且复杂,就需要在代码旁边注释,当然说明文档也是一样的,只不过是相当于在函数里面写注释,便于调用者或者他人理解。

格式与规范:

通常使用三引号(""" 或 ''')来包裹说明文档的内容,放置在函数定义的下方紧接着的位置。

def add_numbers(a, b):
    """
    这个函数用于计算两个数的和。

    参数:
    a (int或float):要相加的第一个数。
    b (int或float):要相加的第二个数。

    返回值:
    int或float:a和b相加的结果。
    """
    return a + b

查看说明文档的方式:

使用 __doc__ 属性
在 Python 中,每个函数对象都有一个 __doc__ 属性,通过访问它可以获取函数的文档字符串内容。

print(add_numbers.__doc__)

使用 help() 函数

help 函数是 Python 内置的用于查看帮助信息的工具,传入函数名作为参数时,它会以一种更友好、格式化的方式展示函数的文档字符串以及其他相关信息(如函数所在的模块等,如果有相关信息的话)。

help(add_numbers)

五:函数的嵌套:

函数的嵌套就是:一个函数里面又调用了另一个函数

def testB():
    print('---- funsB开始 ----')
    print('这里是testB函数执行的代码...(省略)...')
    print('---- funsB结束 ----')

def testA():
    print('---- funsA开始 ----')
    testB()
    print('---- testA结束 ----')

testA()

输出结果为:

小结:如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置

六:局部变量与全局变量:

在Python中,定义在函数外部的变量就称之为全局变量;定义在函数内部变量就称之为局部变量。

定义:全局变量:在函数外部定义的变量称为全局变量。全局变量的作用域是从定义的位置开始,到整个程序文件结束。全局变量能够在所有的函数中进行访问(如果有适当的权限)。

variable = 10
def access_variable():
    print(variable)
access_variable()

在这个例子中,variable是一个全局变量,它在函数access_variable外部定义。函数access_variable可以访问这个全局变量并打印它的值。

定义:局部变量:在函数内部定义的变量称为局部变量。局部变量的作用域仅限于定义它的函数内部。一旦函数执行结束,局部变量就会被销毁。

def local_variable_example():
    local_variable = 5
    print(local_variable)
local_variable_example()

print(local_variable)  # 这会导致错误,因为local_variable在函数外部不存在

小总结

局部变量,就是在函数内部定义的变量

其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的

局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储

当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了


(1)当全局变量也局部变量的命名相同时怎么办:

这是因为 Python 的作用域规则规定,函数内部的变量查找首先从局部作用域开始。它会先查找函数内部定义的变量,只有在找不到局部变量的情况下,才会去考虑全局变量。

global关键字:

globl关键词可以在局部变量直接改变全局变量

# 定义全局变量num = 10
num = 10
# 定义⼀个函数func
def func():
 # 尝试在局部作⽤域中修改全局变量
 num = 20
# 调⽤函数func
func()
# 尝试访问全局变量num
print(num)

总结:在函数体内部理论上是没有办法对全局变量进⾏修改的,所以⼀定要进⾏修改时,需要使⽤ global 关键字

nonlocal关键词

当函数嵌套时,内部函数的局部变量想改变外部函数的局部变量时,就要用到nonlocal关键词

def out():
    sum="我是外部函数的数据"
    print(sum)
    def pas():
        nonlocal sum
        sum='我改变成了内部函数的数据'
        print(sum)
    pas()

out()

七:函数的拆包(元组与字典)

Python拆包:就是把元组或字典中的数据单独的拆分出来,然后赋予给其他的变量。 拆包: 对于函数中的多个返回数据, 去掉元组, 列表 或者字典直接获取⾥⾯数据的过程。 总结:元组的解包!
def size(num1, num2):
     jia = num1 + num2
     jian = num1 - num2
     cheng = num1 * num2
     chu = num1 / num2
     return jia, jian, cheng, chu
# 调⽤size⽅法
yi,yo,yu,ty=size(20, 5)
print(yi)
print(yo)
print(yu)
print(ty)

#25
#15
#100
#4.0

总结:

拆包时要注意,需要拆的数据的个数要与变量的个数相同,否则程序会异常

除了对元组拆包之外,还可以对列表、字典等拆包

案例!!!

第一个:假如从键盘输入了一长串的字符串,要求实现创建一个能够生成长度为6的随机验证码的函数

def yan(a):
    num=""
    if a != 0:
        Q=len(a)
        import random
        print('验证码是:', end='')
        for i in range(6):
            b = random.randint(1,Q-1)
            c = a[b:b+1:1]
            num += str(c)
        print(num)



a = input("请输入")
yan(a)

思路:

第一需要从键盘输入字符串(可以想到:input()),第二随机!我们现阶段学习的可以随机的只有random,第三从随机的里面挑六个字符(可以想到切片或者索引,循环六次并且切片或者索引六次)

标签:函数,Python,variable,参数,print,全局变量,def
From: https://blog.csdn.net/2301_78209919/article/details/144621588

相关文章

  • 基于python实现用户注册与校验
    实现用户注册与校验common—源码"""一、基础功能需求1. 综合使用当前所学知识,如列表、字典、字符串、函数等,实现一个基于命令行的用户注册功能。2. 用户注册时必须要输入用户名、密码、手机号码,用针对用户的输入必须进行验证。3. 用户名的规则:只能是大小写字母或数字......
  • sock_create 函数
    sock_create函数是Linux内核编程中用于创建套接字(socket)的函数。其实现位于net/socket.c文件中。这个函数的原型如下:intsock_create(intfamily,inttype,intprotocol,structsocket**res);各个参数的含义如下:1.family:指定协议族(protocolfamily),例如AF_INET表......
  • sys_socket函数
    sys_socket是一个在Unix以及类Unix系统中用于创建套接字(socket)的系统调用,它是更高层次的套接字API的基础。通过套接字,程序能够在网络上进行通信。以下是sys_socket函数的一些基本信息和用法:函数原型在Linux系统中,`sys_socket`的函数原型通常定义在内核源码中。它......
  • 函数高级
    闭包就是将数据封装在一个包(区域)中,使用时再去里面取。本质上,闭包是基于函数嵌套搞出来的一种特殊嵌套闭包的应用场景,1:封装数据防止污染全局装饰器点击查看代码importtimeimportfunctoolsdeffunc(a,b):print("执行函数func....")print(f"正在计算{a}+{......
  • Python实例之函数基础打卡篇
    大家晚上好~今日学习之函数打卡。要求:自动打卡定义一个函数,函数名任意,要求调用函数后实现自动打卡;上午打卡时间为8点到9点,下午打卡时间为14点到15点,让用户输入打卡时间,如果时间在8点到9点之间,提示”早上好,打卡成功新的一天“,如果时间在14点到15点之间,提示“下午好,打卡成功不......
  • python怎么看矩阵维数
    print(X.shape):查看矩阵的行列号print(len(X)):查看矩阵的行数print(X.ndim):查看矩阵的维数1、查看矩阵的行列号2、查看矩阵的行数3、查看矩阵的维数......
  • python中怎么提取关键词
    简单的关键词提取文章内容关键词的提取分为三大步: (1)分词 (2)去停用词 (3)关键词提取分词方法有很多,我这里就选择常用的结巴jieba分词;去停用词,我用了一个停用词表。具体代码如下:import jiebaimport jieba.analyse#第一步:分词,这里使用结巴分词全模式text = '''......
  • Python字符串及正则表达式(十一):正则表达式、使用re模块实现正则表达式操作
    前言:在Python编程的广阔天地中,字符串处理无疑是一项基础而关键的技能。正则表达式,作为处理字符串的强大工具,以其灵活的模式匹配能力,在文本搜索、数据清洗、格式验证等领域发挥着不可替代的作用。本系列博客已经带领大家逐步深入了Python字符串操作的多个方面,从基础的字......
  • Python大学生课程在线考试组卷管理系统
    文章目录项目介绍和开发技术介绍具体实现截图开发技术开发与测试:设计思路系统测试可行性分析核心代码部分展示文章目录/写作提纲参考源码/演示视频获取方式项目介绍和开发技术介绍考试管理系统主要是为了用户方便对班级信息、通知公告、课程信息、试题管理、试卷、......
  • 橙猫猫论文数据-能同时解析20条函数坐标
    功能介绍仅需两步(上传图片+标记任意两点坐标),即可解析出图片函数中的坐标数据上传图片图片要求图片大小小于5MB一次仅上传一张图片二维直角坐标系什么图片解析效果更好?图片本身分辨率越高,效果越好函数曲线越清晰,效果越好曲线函数解析效果最好,折线函数或直线......