下载帮

您现在的位置是:首页 > 教程分享 > 经验技巧

经验技巧

从零开始学Python(六):函数

2022-03-18 18:39经验技巧

01-作业

# 1 return代表了函数的结束(return下的代码不会执行)
# 2 谁调用函数 谁接受函数的返回值
# def func(a, b):
#     c = a + b
#     return c
#     print("123")
#
#
# num = func(10, 20)
# print(num*10)

# 列表 元组 集合 字典
a = [1, 2, 3]
b = (1, 2, 3)
d = {"name": 1, "age": 2}

print(a[0])
print(b[0])
print(d["name"])

02-函数说明文档

def func():
    """
        我是一个函数
        sdfsdf
        sdfsdfs
        sdfsdf
    """
    print("xxx")


# help(func)

help(print)

03-函数嵌套

def func01():
    func02()
    print("func01")


def func02():
    print("func02")


def func03():
    func01()
    print("func03")


def func04():
    func03()
    print("func04")


func04()

04-练习

# 1 通过函数 完成打印星星
# func01 可以打印一行星星
def func01():
    print("*" * 30)


# func02 必须使用func01 同时打印5行星星
def func02():
    for i in range(5):
        func01()


# func02()


# 2 求3个数的和
# func03 可以求任意3个数字的和
def func03(a, b, c):
    # my_sum = a + b + c
    # return my_sum
    return a + b + c


# func04 通过使用func03 获取3个数的平局值
def func04(a, b, c):
    # ret = func03(a, b, c)
    # my_avg = ret / 3
    # print(my_avg)
    print(func03(a, b, c)/3)


func04(30, 30, 30)

05-局部变量

# 局部变量: 函数内部定义的变量叫做局部变量
# 1 局部变量在哪个函数中定义 他就只能在哪个函数中使用(不能在函数外部直接使用)
# def func():
#     num = 10
#     print(num)
#
# def func01():
#     print(num)
#
# func()
# print(num)

# 函数之间 的局部变量不互相影响可以是同名的
def func01():
    num = 10
    print(num)

def func02():
    num = 20
    print(num)

06-全局变量

# 全局变量: 定义在函数外部的变量就是全局变量
# 作用范围: 在函数内部使用 在函数外部使用
# num = 100
#
# def func():
#     print(num)
#
# def func01():
#     print(num)
#
# func()
# func01()
# print(num)

num = 100


def func():
    # 在函数内部 如果有局部变量和全局变量的 就近原则
    num = 30
    print(num)

func()
print(num)

07-global

num = 100


def func():
    # 在函数内部 想要修改全局变量的时候 需要声明这个变量是全局变量
    global num
    num = 30
    print("函数内部:", num)


# func()
print("函数外部:", num)

08-练习

# 1. 定义全局变量
glo_num = 0

def test1():
      global glo_num    # 修改全局变量
      glo_num = 100


def test2():
      # 调用test1函数中修改后的全局变量
      print(glo_num)

# 2. 调用test1函数,执行函数内部代码:声明和修改全局变量
test1()
# 3. 调用test2函数,执行函数内部代码:打印
test2()    # 100



# def test1():
#     return 50
#
#
# def test2(num):
#     print(num)
#
#
# # 1. 保存函数test1的返回值
# result = test1()
#
# # 2.将函数返回值所在变量作为参数传递到test2函数
# test2(result)  # 50

09-返回多个返回值

# 当我们用函数返回多个返回值的时候
# 返回值会以元组的形式 被返回出去
def func():
    a = 100
    b = 200
    return a, b

ret = func()
print(ret)

10-交换数值

a = 10
b = 20

# 第一种方法
c = a
a = b
b = c

# 求和的方法
# a = 30
a = a + b
# b = 10
b = a - b
a = a - b

# python
a, b = b, a

11-位置参数和关键字参数

# 位置参数: 按照参数的先后顺序来确定
# def func(name, age, sex):
#     print(f"我叫{name},我今年{age},我是{sex}的")
#
#
# func("老王", 18, "男")


# 关键字参数
def func(name, age, sex):
    print(f"我叫{name},我今年{age},我是{sex}的")


func("老王", 18, "男")
func("老王", age=18, sex="男")
func(name="老王", sex="男", age=18)
# 不可以这样写
# 注意:
# 关键字参数, 非关键字参数必须写到关键字参数前面
func(age=18, "老王", sex="男")

12-缺省参数

# 缺省参数: 可以去设置默认参数的值 这样就不会出现由于少传递参数而报错的现象了
def func(name, age, sex="未知"):
    print(f"我叫{name},我今年{age},我是{sex}的")

func("老王", 18)


def func(name="未知", age="未知", sex="未知"):
    print(f"我叫{name},我今年{age},我是{sex}的")

func(age=18)


13-不定长参数

# 不定长参数:
# *args: 存储所有的多余出来的不是以key=value形式出现的参数 并且以元组的形式存储这些参数
# **kwargs: 存储所有的多余出来的以key=value形式出现的参数 并且以字典的形式存储这些参数
def func(name, age, q,*args, **kwargs):
    print(name)
    print(age)
    print(args)
    print(kwargs)


func("1", "2",3, 4, 5, sex="女")

14-拆包

# num = (1, 2)
# a, b = num
# print(a)
# print(b)
#
# a, b = (3, 4)
# print(a)
# print(b)
#
# a, b = b, a
def func():
    return 100, 200


a, b = func()
print(a)
print(b)

15-引用

# a = 10
# b = 10
# c = 10
#
# print(id(a))
# print(id(b))
# print(id(c))


def func(data):
    print("函数内部", id(data))


num = 10

print("函数外:", id(num))
func(num)

文章评论