python函数

2022/2/4 12:14:47

本文主要是介绍python函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

    • 一、函数的定义
    • 二、4种函数的参数形式
    • 三、函数返回值
    • 四、函数的作用域,全局/局部变量
    • 五、函数的嵌套
    • 六、函数的递归

一、函数的定义

# 创建高楼
def create_building():
    # 创建房间
    create_room()
    # 创建电梯
    create_stair()

def create_room():
    print('开始创建房间')
    print('正在创建房间')
    print('创建房间完成')

def create_stair():
    print('开始创建电梯')
    print('正在创建电梯')
    print('创建电梯完成')

create_building()
开始创建房间
正在创建房间
创建房间完成
开始创建电梯
正在创建电梯
创建电梯完成

二、4种函数的参数形式

# 1. 普通参数
def say_hi(name):
    print(f'hello,{name}')
    print('欢迎来到大熊课堂')
    
say_hi('JackMa')

def create_window(width,height):
    print(f'窗口的宽是{width};高是{height}')
    
create_window(2,1)


# 2. 默认参数
def total(hour, salary=8):
    print(f'今天的薪水是{hour * salary}元')
    
total(8)  # 用默认值,不会报错
total(8, 10)


# 3. 关键字参数  解决函数传参顺序问题
def student(firstname, lastname):
    print(f'firstname is {firstname};lastname is {lastname}')

student('andy', 'Feng')
student(lastname='Feng', firstname='andy')


# 4. 不定长参数  *args元组  **kwargs字典
def my_function(width, height, *args, **kwargs):
    print(width)
    print(height)
    print(args)
    print(kwargs)

my_function(2.3, 4.5, 'hello', 'welcome', 'to', 'daxiong', 'thankyou', lastname='Feng', firstname='andy')
hello,JackMa
欢迎来到大熊课堂
窗口的宽是2;高是1
今天的薪水是64元
今天的薪水是80元
firstname is andy;lastname is Feng
firstname is andy;lastname is Feng
2.3
4.5
('hello', 'welcome', 'to', 'daxiong', 'thankyou')
{'lastname': 'Feng', 'firstname': 'andy'}

三、函数返回值

# 例1:求圆的面积
pi = 3.14
def area(r):
    return pi * (r ** 2)

print(area(2))


# 例2:将分钟转化为“时-分” 100分钟=1小时40分 1小时=60分钟 100/60
def transform_minute(minute):
    hours = minute // 60
    minutes = minute % 60
    print(f'{minute}分钟可以转化为{hours}小时{minutes}分钟')
    return hours, minutes

hours, minutes = transform_minute(200)
print(f"hours is {hours}")
print(f'200分钟可以转化为{hours}小时{minutes}分钟')
print(transform_minute(200))
12.56
200分钟可以转化为3小时20分钟
hours is 3
200分钟可以转化为3小时20分钟
200分钟可以转化为3小时20分钟
(3, 20)

四、函数的作用域,全局/局部变量

# 全局变量
a = 1  # 不可变类型  想在函数内修改需要在前面加global
l = [1, 2, 3]  # 可变类型  不用global类型就可以在函数内修改

def test1():
    # a = 100  # 局部变量
    global a
    a += 1  # 修改全局变量
    l.append(4)
    print(l)

def test2():
    # a = 300  # 局部变量
    print(a)

test2()
test1()
print(a)
1
[1, 2, 3, 4]
2

五、函数的嵌套

def test1():
    a = 10
    print('test1开始执行')
    print(f'test1内部变量a的值是{a}')

    def test2():
        # 内部函数修改外部函数的值,需要加nonlocal函数
        # 函数内部修改不可变全局变量,需要加global函数
        nonlocal a
        a = 100
        print('test2开始执行')
        print(f'test2内部变量a的值是{a}')

    test2()
    print(f'test1内部变量a的值是{a}')

test1()
# test2()  # 不能调用,只能在内部
test1开始执行
test1内部变量a的值是10
test2开始执行
test2内部变量a的值是100
test1内部变量a的值是100

六、函数的递归

大部分递归都可以用循环来代替

例子:算阶乘

def fact(n):
    if n == 1:
        return 1
    result = n * fact(n-1)
    return result


# 不能用太多递归次数,因为python用栈来存函数变量,如果函数太多,会导致栈溢出
result = fact(3)
print(result)


这篇关于python函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程