函数简介以及传递参数的方法

本文详细介绍了Python中的函数概念、变量作用域、参数传递(包括默认值和关键字传递)、以及如何处理任意数量的参数。涵盖了全局函数、局部函数、lambda函数、方法和文档注释等内容,并通过实例演示了如何使用这些功能实现代码复用和灵活调用。
摘要由CSDN通过智能技术生成

目录

一、函数简介

二、变量的作用域

三、函数传递参数

四、传递任意个参数


一、函数简介

什么是函数:

  • 其实就是一个代码段,这段代码可以重复的执行,通过函数可以实现代码的复用

  • 函数是不能自己主动执行的,必须被调用的时候才能被执行

python的模块

  • 一个python文件,就是一个模块


函数分类

  • 全局函数:直接定义在模块中的函数就是全局函数

  • 局部函数:定义在函数内部的子函数,这样的函数就是局部函数

  • 匿名函数: 也称之为lambda函数,其实是一个表达式

  • 方法:方法也是一种函数,只是函数需要和特点的数据类型绑定使用


定义函数

def 函数名():
    语句
    语句
    ...

调用函数

函数名()

案例:

def f1(): 
    print("1")
    print("ok")
    print("2")


print("start process...")

f1()

print("over")

执行函数的结果

  • 函数的输出:在函数中用print来输出一个结果,这个可以可以直接显示

    输出用:print

        输出结果:可以直接打印出来

  • 函数的返回值:在函数中用return 来返回一个或者多个结果,这个结果可以用来接收,一旦执行到return,那么return后面的代码就不会再执行了,也就是会直接退出函数,返回到主程序继续运行

     返回用:return        

        返回值:可以再主程序进行接收,如果返回多个值,那么多个值会保存成一个元组

案例:让用户在函数中输入两个数据,将大的数字加1并打印出来

def f1():
    num1 = int(input("请输入第一个数字:"))
    num2 = int(input("请输入第二个数字:"))
    if num1 > num2:
        return num1
    else:
        return num2

res = f1()
print(res+1)

函数的说明文档

  • 一般情况先,每个函数都应该有个说明文档,来解释这个函数的作用以及使用方法

  • 查看函数的说明文档的方法

函数名.__doc__

案例:

def f1():
    """
    这是我们的一个测试函数,函数的没有输出,但是有返回值,返回是3
    这个函数有xxxx        
    欢迎使用这个
    .....
    :return:
    """

    name = "tom"
    age =3
    addr = "hebei"
    return name,age,addr

print(f1.__doc__)


二、变量的作用域

  • 本地变量:定义在模块中的【主程序中的变量】,有效范围是整个python文件,包括主程序和函数内部

  • 局部变量:在函数中定义变量,默认有效范围仅仅在函数内部

  • 内置变量:由python自己定义的

注意事项:

  • 变量的作用范围越小,优先级越高

  • 局部变量优先级 > 本地变量

  • 修改局部变量,不会修改全局变量

  • 程序找变量的过程

    • 首先找最近的变量的,如果有就直接使用;如果没有,就向上层查找

def f1():
    x = 2  
 # 局部变量
    z = 5    # 局部变量
    print(x,y,z)

x = 1     # 全局变量
y = 3     # 全局变量

print(x,y)     # 输出 x 是 1,y 是 3

f1()           # 将 x 改为 2,z 设置为5 ,然后输出x y z  也就是输出 2  3  5

print(x,y)     # 输出 x 和 y,  此时 x 是 1,y 是 3

默认情况下:函数中的变量是局部变量,但是可以用关键字:global将变量明确指定成全局的

x = 1     # 全局变量
y = 3     # 全局变量

def f1():
    x = 2        
# 局部变量
    z = 5         # 局部变量
    global y      # 全局变量【将局部变量y转换为全局变量】
    y = 0         # 为转换后的全局变量赋值 0
    print(x,y,z)

print(x,y)     # 输出 x 是 1,y 是 3

f1()           # 将 x 改为 2,z 设置为5 ,然后输出x y z  也就是输出 2  3  5

print(x,y)     # 输出 x 和 y,  此时 x 是 1,y 是 0


三、函数传递参数

def 函数名(变量):
    代码

案例

def printWellcome(userName):
    print("欢迎 %s 来到python"%(userName))

userInput = input("请输入姓名:")    # tom  被传递给 userInput 变量
printWellcome(userInput)           # 调用函数,在调用的时候,将userInput中的值传递给函数

案例:用函数实现计算器功能

def printWellcome(num1,num2,fuhao):
    if fuhao == "+":
        res = num1 + num2
    elif fuhao == "-":
        res = num1 - num2
    if fuhao == "*":
        res = num1 * num2
    elif fuhao == "/":
        res = num1 / num2

    # return res
    print(res)

userInput1 = int(input("请输入一个数字:"))
userInput2 = int(input("请输入一个数字:"))
userInput3 = input("请输入要执行的运算符 + - * /:")
printWellcome(userInput1,userInput2)

# num = printWellcome(userInput1,userInput2,userInput3)
# print(num)

参数的默认值

  • 如果函数要求传递参数,但是调用的时候没有传递,那么就会报错

案例1:

def printWellcome(name="jack"):     # name = “jack“ 这是为参数设置默认值
    print("hello %s"%(name))

userInput1 = input("请输入姓名:")

printWellcome()            # 调用函数,没有向函数传递参数,此时函数会使用参数的默认值

printWellcome(userInput1)  # 调用函数,向函数传递参数,此时函数会使用传递进来的参数

案例2:函数有四个参数,name,age,tel、addr,要求必须 传递name和age,tel和addr两个参数可以不传递,如果用户没有给tel和addr传递参数,默认用nul

def printWellcome(name, age, tel="nul", addr="nul"):
    print("姓名是%s, 年龄是%s, 电话是%s, 地址是%s"%(name,age,tel,addr))

userInput1 = input("请输入姓名:")
userInput2 = input("请输入年龄:")
userInput3 = input("请输入电话:")
userInput4 = input("请输入地址:")

printWellcome(userInput1,userInput2)
printWellcome(userInput1,userInput2,userInput3)
printWellcome(userInput1,userInput2,userInput3,userInput4)

基于关键字来进行传递参数

  • 要求:定义函数时候参数的名字必须和调用时候参数的名字一致

  • 格式

# 定义函数
def fun1(p1,p2,p3="nul"):         # 此时参数的名字分别是p1  p2  p3

# 调用函数
fun1(p1=xx,p2=xx)                 # 此时必须明确指定p1=x  p2=x  p3=x


四、传递任意个参数

  • 魔法赋值

   方法1 def fun1 (*参数)

  • 此方法用于接受任意个参数,得到的是一个元组

def fun1(*p1):
    print(p1)      # p1用于接收和保存传递进来的多个参数,多个参数是以元组的形式保存的

fun1()
fun1("a")
fun1("a","b")      # 向函数传递多个参数

方法2 def fun2 (**参数)

  • 此方法用于接受任意个参数,得到的是一个字典

def fun1(**p1):
    print(p1)    
 # p1用于接收和保存传递进来的多个参数, 数据是以字典的形式保存的

fun1()
fun1(name="tom")
fun1(name="tom", age="18")
fun1(name="tom", age="18", addr="hebei")


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值