Python基础 笔记(九) 函数及进阶

简介: Python基础 笔记(九) 函数及进阶

一、Python中的函数

1、函数--入门

函数:

1、函数就是将经常使用的代码进行一个封装,封装之后给这段代码起个名字

2、以后使用者只需要用这个函数名字就可以实现同样的功能,而内部代码不需要再重写


函数的语法:

   def 函数名(参数):

       函数体

       ....

       return 返回值



    def 果汁机(水果):

       榨果汁

       ...

       return 果汁


调用函数:

函数名(要传入的参数)

 
 
# 需求一:定义一个函数,要求传入两个数字,返回这两个数字的和
 
def add(a, b):  # 形式参数
    sum1 = a + b
    return sum1
 
 
# 调用函数
result = add(10, 20)  # 实际参数
print(f'result = {result}')
 
 
# 合并
def add(a, b):  # 形式参数
    return a + b
 
 
print(add(10, 20))

2、函数--四种类别

 
 
 
def func1(a, b):  # 形式参数
    """
    该函数用来实现两个数的和
    :param a: 第一个数
    :param b: 第二个数
    :return:  两个数的和
    """
    return a + b
 
 
def func2():
    print('hello world')
 
 
def func3(my_str):
    print('hello world' + my_str)
 
 
def func4():
    return 'helloworld'
 
 
# 函数的调用
 
print(func1(10, 20))
 
func2()  # 对于没有返回值的方法不能放在print语句中
 
func3('xxxx')
 
print(func4())

3、函数--案例

 
 
 
# 尽量改参 不要改源码
def yang(rows, cols):
    for i in range(rows):
        for j in range(cols):
            print('*', end='')
        print()
 
 
yang(8, 17)

4、函数--嵌套

 
 
def kao_jia_zhao():
    print('考驾照!----1')
    print('考驾照!----1')
    print('考驾照!----1')
 
def shi_xi_drive():
    print('实习开车!----2')
    print('实习开车!----2')
    print('实习开车!----2')
 
def drive(): #开车
    kao_jia_zhao()
    shi_xi_drive()
    print('正常驾驶!-----3')
    print('正常驾驶!-----3')
    print('正常驾驶!-----3')
 
drive()
 
 

5、函数--作用域

a = 123  # 全局变量
 
 
def func1():
    global a
    a = 888  # 局部变量
    global b  # 将局部变量升级为全局变量
    b = 999
    print(f'我是func1函数={a}')  # 就近原则
    print(f'我是func1函数={b}')  # 就近原则
 
 
print(a)  # 因为函数还没有执行,这个的全局变量还没有声明
func1()  # 在函数中使用global,一定要调用函数,才可以升级为全局变量
print(a)  # 888
print(b)  # 999

二、函数的进阶

1、函数的进阶--函数返回多个值

"""
1:函数的进阶
  1)一个函数如何返回多个值
    如果一个函数返回多个值,则将返回的多个值封装成元组
"""
 
 
def func1():
    return 1, 2
 
 
# 获取结果-方式1
print('-------------')
result = func1()
print(result[0])
print(result[1])
 
# 获取结果-方式2
print('-------------')
r1, r2 = func1()
print(r1)
print(r2)

2、函数的进阶--位置参数和关键字参数

"""
     1、位置参数,通过传递参数的先后顺序来决定哪个实参给哪个形参
     2、关键字参数:函数调用时通过“键=值”形式传递参数.
"""
 
 
def func1(name, age, sex):
    print(f'名字是{name},年龄是{age},性别是{sex}')
 
 
# 位置参数
func1('张三', 18, '男')
 
# 关键字参数
func1(name='张三', age=18, sex='男')
func1('张三', age=18, sex='男')  # 可以
# func1(name='张三',age=18,'男') #不可以,位置参数必须在关键字参数的前边
 
 
func1(sex='男', age=18, name='张三')

3、函数的进阶--默认参数

"""
     3、默认参数:默认参数必须放在最后
"""
 
 
def func1(name, age, sex='女'):
    print(f'名字是{name},年龄是{age},性别是{sex}')
 
 
func1('张三', 18)  # 如果默认参数不给值,则使用默认参数
func1('张三', 18, '男')  # 如果默认参数给值,则使用实参的值
 
func1(name='张三', age=18)  # 如果默认参数不给值,则使用默认参数
func1(name='张三', age=18, sex='男')  # 如果默认参数不给值,则使用默认参数
 
print('-------------------------------------------')
#
# def func1(name='张三',age,sex):    #  默认参数: 默认参数必须放在最后
#     print(f'名字是{name},年龄是{age},性别是{sex}')
#
#
# func1('xxx','yyy')

4、函数的进阶--不定长参数

"""
不定长参数
        形参的个数是不确定的,你想传入多少就传入多少
"""
 
 
def add1(a, b):
    return a + b
 
 
def add2(a, b, c):
    return a + b + c
 
 
def add3(a, b, c, d):
    return a + b + c + d
 
 
def func(*args):  # 这个参数名字随便写   args = (1,2,3,4,5,6,7,8)
    print(type(args))  # 可变参函数本质上就是元组
    sum = 0
    for num in args:
        sum += num
    return sum
 
 
print(func())
print(func(1))
print(func(1, 2))
print(func(1, 2, 3))
print(func(1, 2, 3, 4, 5, 6, 7, 8))
"""
    不定长参数
       *args:
          1、形参的个数是不确定的,你想传入多少就传入多少
          2、必须以位置参数传入,传入的参数会变成元组
       **kargs:
        1、形参的个数是不确定的,你想传入多少就传入多少
        2、必须以关键字的参数传入,传入之后,转为字典
"""
 
 
def func(**args):  # 这个参数名字随便写   args = {'a'=1,'b'=2}
    print(type(args))  # 可变参函数本质上就是元组
    sum = 0
    for k, v in args.items():
        sum += v
    return sum
 
 
# func(1,2) #报错
print(func(a=1, b=2))  # 不报错
print(func(a=1, b=2, c=3))  # 不报错

5、函数的进阶--拆包

1. """
"""
拆包
"""
 
#拆包-1
my_tuple1 = (1,2,3)
 
n1,n2,n3 = my_tuple1
 
print(n1)
print(n2)
print(n3)
 
 
#拆包-2
 
def func():
    return 1,2
 
r1,r2 = func()
 
print(r1)
print(r2)

6、函数的进阶--引用

 
#引用:就是门牌号,也被称为地址
a = 10  #该语句的本质是;将10这个数字所在空间的地址赋给了a
b = a
c = a
a = 20
 
#这里的id函数获取的是变量指向的空间的地址(门牌号)
 
print(id(a))  #140716035397568
print(id(b))  #140716035397568
print(id(c)) #140716035397568
2.

所谓可变类型与不可变类型是指:

       数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变


可变类型

   列表

   字典

   集合


不可变类型

   整型

   浮点型

   字符串

   元组

7、函数的进阶--匿名函数

 
"""
匿名函数:
"""
def add2(a ,b):
    return  a + b
print(add2(10 ,20))
 
add = lambda a ,b : a +b
print(add(10 ,20))
 
 
# def yunsuan(a,b,func):  #func = lambda a,b:a+b
#     return func(a,b)
#
# result1 = yunsuan(10,20,lambda a,b:a+b)
# result2 = yunsuan(10,20,lambda a,b:a-b)
# result3 = yunsuan(10,20,lambda a,b:a*b)
# result4 = yunsuan(10,20,lambda a,b:a/b)
#
# print(result1)
# print(result2)
# print(result3)
# print(result4)
目录
相关文章
|
3月前
|
Python
【python从入门到精通】-- 第五战:函数大总结
【python从入门到精通】-- 第五战:函数大总结
106 0
|
2月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
146 67
|
7天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
20 3
|
11天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
24 2
|
1月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
52 18
|
30天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
62 8
|
1月前
|
Python
Python中的函数
Python中的函数
46 8
|
2月前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
2月前
|
Python
Python中的`range`函数与负增长
在Python中,`range`函数用于生成整数序列,支持正向和负向增长。本文详细介绍了如何使用`range`生成负增长的整数序列,并提供了多个实际应用示例,如反向遍历列表、生成倒计时和计算递减等差数列的和。通过这些示例,读者可以更好地掌握`range`函数的使用方法。
64 5
|
3月前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解