函数的定义和使用

本文介绍了Python中的函数定义与调用,包括内置函数和自定义函数的使用。详细阐述了函数的返回值,特别是序列解包的概念,并讲解了不同类型的参数:必要参数、关键字参数、默认参数、可变参数。此外,还讨论了变量的作用域,区分了局部变量和全局变量,并展示了如何使用`global`关键字来操作全局变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、定义与调用

内置函数:python这个语言跟我们之前定义好的,拿过来直接用就好
例如:print()
round(1.13432,3) 四舍五入保留小数点后3位

函数可以解决代码的封装性,避免重复代码,函数都有一定的功能

自定义函数:根据自己的需要定义的函数,尽量不要跟内置函数名字相同(要实在用,可以将首字母大写,以便于区分)

格式

def funcname(params):
     pass

1、定义一个打印hello world字符串的方法

def Print():
    print('hello world')

Print()

2、定义一个打印指定字符串的方法
(最后一行是调用函数)

利用变量赋值,定义一个变量ms

def Print(s):
    print(s)


ms = 'hello1'
Print(ms)

也可以函数中直接写要输出的字符

def Print(s):
    print(s)


Print('hello')

3、定义一个计算加法的函数 a + b
(不打印的话没有结果输出)

def Add(a, b):
    # 没有return相当于return None
    return a + b


c = Add(1, 3)
print(c)

也可以使用变量

def Add(a, b):
    result = a + b
    return result


c = Add(1, 3)
print(c)

相乘

def Mul(a, b):
    return a * b


s = Mul(2, 3)
print(s)

函数必须有参数和返回值,要是没有返回值说明返回的是None

return后面的代码是不会被执行的

def Print(s):
    print(s)
    return
    print(s)
    print(s)
    print(s)


ms = 'hello ccc'
Print(ms)

在这里插入图片描述

2、返回值和序列解包

定义一个函数,既能计算a+b,还能计算a-b

def Add_sub(a, b):
    sum = a + b
    sub = a - b
    return sum, sub

c = Add_sub(4,1)
print(c)

在这里插入图片描述

打印类型

def Add_sub(a, b):
    sum = a + b
    sub = a - b
    return sum, sub


c = Add_sub(4,1)
print(type(c))
print(c)
print(c[0], c[1])

在这里插入图片描述

另一种调用方法(为了更加清楚演示才用sum,以后起变量名不要跟内置函数名冲突,可能会有bug)

def Add_sub(a, b):
    sum = a + b
    sub = a - b
    return sum, sub


sum, sub = Add_sub(4, 1)
print(sum, sub)

自动归类为元组

d = 1, 2, 3

print(d)

在这里插入图片描述
要想使用序列解包的赋值方式的话,值里面的元素个数和变量里面的元素个数一定要是一一对应的

链式赋值:多个变量赋值同一个值

a = b = c = 1

3、参数

形参和实参,就是形式参数和实际参数

例如下面代码,a和b就是形参,1和3就是实参

(1和3是必要参数,都要传)

def Add(a, b):
    result = a + b
    return result


c = Add(1, 3)
print(c)

可以看看a和b打印出来的数值

3和1传入顺序与定义顺序必须是相对应的

def Add(a, b):
    result = a + b
    print("a=", a)
    print("b=", b)
    return result


c = Add(1, 3)
print(c)

在这里插入图片描述

关键字参数:用关键字来指定传递参数,顺序不依赖定义的顺序

比如把1传给b,3传给a

c = Add(b=3,a=1)

在这里插入图片描述

默认参数 可以在定义参数的时候直接给一个默认值

(如下直接给b默认值2)

def Add(a, b=2):
    result = a + b
    print("a=", a)
    print("b=", b)
    return result


c = Add(3)
print(c)

在这里插入图片描述

例如:简单打印一个公司人物信息

def print_userinfo(name, gender, age, depart):
    print("我是"+name)
    print("我是"+gender+"生")
    print("我今年"+str(age)+"岁")
    print("我在"+depart+"工作")


print_userinfo('小华', '男', 23, '长春一汽')

在这里插入图片描述

也可以默认关键字参数

def print_userinfo(name, gender='男', age=23, depart='中国一汽'):
print_userinfo('小李',age=30)

也可以改变参数位置

(depart可以放在age前面)

print_userinfo('小红', depart='百度', age=20)

注意:
调用的时候要先传必要参数,比如小红要比age先传,也就是不能把小红放到age后面

没有默认值的参数放在有默认值参数的前面

可变参数

一个*表示是一个序列类型的可变参数

(for是遍历它)

def test(*value):
    for v in value:
        print(v)


test('hello','world','python')

列表和元组都会被认为一个参数

def test(*value):
    for v in value:
        print(v)


s = ('hello', 'python', 'world')
test(s)

在这里插入图片描述

**代表的是一个字典类型的可变参数

例如:模拟一个服务员给客人点菜的场景

(可变参数一定要放第一位)

def print_food(*food, placeno, waiter):
    print("这是第"+placeno+"桌客人的点菜单")

    for f in food:
        print(f)

    print("服务员:" + waiter)


print_food('宫保鸡丁', '水煮肉片', placeno='12', waiter='小王')

在这里插入图片描述

最开始出现了错误,因为代码这样写,

错误提示:只能用关键字调用的参数,计算机认为这4个字符串都是可变参数*food

所以应该用关键字

print_food('宫保鸡丁', '水煮肉片', '12', '小王')

在这里插入图片描述

sep 分隔符

print("a"+" b")
print('a', 'b')
print('a', 'b', sep=',')

在这里插入图片描述

end 结尾,默认换行符,用end可以自己设定结尾,若用空格键,下一行打印的c会跟在这一行后面

print('a', 'b', sep='|', end='')
print('c')

在这里插入图片描述

4、变量的作用域

局部变量与全局变量

函数体内部的a是局部变量,外边的a是全局变量

a = 'abc'

def test():
    a = 'def'
    print('函数内部的a', a)


print('调用前的a:', a)
test()
print('调用后的a:', a)

在这里插入图片描述

global

改变后a已经是外面的a了

a = 'abc'

def test():
    global a
    a = 'def'
    print('函数内部的a', a)


print('调用前的a:', a)
test()
print('调用后的a:', a)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值