深度解读python的函数(一)

简介: 深度解读python的函数(一)

函数

概念:功能 (包裹一部分代码 实现某一个功能 达成某一个目的)

特点:可以反复调用,提高代码的复用性,提高开发效率,便于维护管理

#Python函数的基础知识

函数是一段具有特殊功能的、可重用的语句组。(将代码封装起来)

定义:def(定义一个函数)关键词开头,空格之后接函数名称和圆括号(),最后还有一个“:”。

def是固定的,不能变,必须是连续的def三个字母,不能分开。

空格 为了将def关键字和函数名称分开,必须空。

函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。

虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并表达函数功能。

括号:必须要有;

注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。

调用:就是函数名() 一定要加上括号。

1.函数基本格式

#定义一个函数

def 函数名():

code1

code

#调用函数

函数名()

#定义函数

def func():

print("我是一个函数 … ")

#调用函数

func()

#函数定义

def my_len():
"""计算s1的长度"""
s1 = "hello world"
length = 0
for i in s1:
length = length+1
print(length)
#函数调用
my_len()

函数的定义和调用

注:只定义函数而不调用,函数就不执行。

2.函数的命名

字母数字下划线,首字符不能为数字

严格区分大小写,且不能使用关键字

函数命名有意义,且不能使用中文哦

驼峰命名法:

(1) 大驼峰命名法: 每个单词的首字符要大写 (类的命名)

mycar => MyCar

(2) 小驼峰命名法: 除了第一个单词首字符小写外,剩下单词首字符大写 (函数或者变量)

mycar => myCar

_命名法:可以将不同的单词用_拼接在一起

mycar => my_car

symmetric_difference symmetricDifference SymmetricDifference

#函数定义

def cfb_99():
    for i in range(1,10):
        for j in range(1,i+1):
            print("{:d}*{:d}={:2d} ".format(i,j,i*j) ,end="")
        print()

#调用函数,打印多次,可以循环调用

for i in range(5):
    cfb_99()

函数写出乘法口诀

3.函数的参数

参数: 函数运算时需要的值

参数种类:

(1)形参: 形式参数,在函数的定义处

(2)实参: 实际参数,在函数的调用处

形参的种类:

1.普通形参(位置形参) 2.默认形参 3普通收集形参 4.命名关键字形参 5.关键字收集形参

实参的种类:

1.普通实参(位置实参) 2.关键字实参

原则:

形参和实参要一一的对应

1.普通形参(位置形参)

#定义函数

"""hang,lie普通形参,在函数定义处"""
def small_star(hang,lie):
    i = 0
    while i < hang:
        j = 0
        while j < lie:
            print("*",end="")
            j +=1
        print()
        i += 1

#调用函数

“”“10,10普通实参,在函数的调用处”“”

small_star(10,10)
small_star(2,3)

2.默认形参

“”“hang,lie默认形参,在函数定义处”“”

“”"

如果给予实参,那么使用实参

如果没有给予实参,那么使用参数身上的默认值

“”"

def small_star(hang=10,lie=10):
    i = 0
    while i < hang:
        j = 0
        while j < lie:
            print("*",end="")
            j +=1
        print()
        i += 1

small_star(4,8)
small_star(8)
small_star()

默认形参,调用时带有实参时,就按实参运行,不带实参就按默认的形参值运行

传一个实参,给第一个形参赋值

3.普通形参 + 默认形参

“”“定义参数时,普通(位置)形参必须写在 默认形参 的前面 不能调换位置”“”

def small_star(hang,lie=10):
    i = 0
    while i < hang:
        j = 0
        while j < lie:
            print("*",end="")
            j +=1
        print()
        i += 1
small_star(5,7)
# small_star(5)
# small_star() error

普通形参必须传值,否则报错

4.关键字实参

print(“<=============>”)

“”"

1.如果都是关键字实参,可以任意调整实参的顺序

2.普通实参必须写在关键字实参的前面

"""
def small_star(hang,a,b,c,lie=10):
    i = 0
    while i < hang:
        j = 0
        while j < lie:
            print("*",end="")
            j +=1
        print()
        i += 1

# hang a ... lie 具体指定参数的值 叫做关键字实参, 在函数的调用处赋值;
# small_star(hang=3,a=4,b=5,c=6,lie=7)
# small_star(b=5,c=6,lie=7,a=4,hang=3)    #全部使用关键字实参,可以任意调整实参顺序
small_star(3,4,b=5,c=6,lie=7)                     #普通实参与关键字实参同时存在,普通实参必须在关键字实参前面
small_star(3,4,b=5,lie=7,c=6)
# small_star(b=5,c=6,lie=7,3,4) error

5.收集参数

(1) 普通收集形参: 专门用来收集那些多余的没人要的普通实参

收集之后,会把多余实参打包成一个元组

定义的时候,参数头上1个星星。调用的时候不用加星星

如果没有定义收集普通形参,那么实参个数一定得与形参数量一致,既不能多,也不能少,不然报错。

定义了收集普通形参,实参个数就没有限制了。但普通收集普通形参,只能收集位置参数,不能收集

关键字参数

def func(*args):    args不是固定的,可以任意起名
    pass
    args => arguments
"""
def func(a,b,c,*args):           #定义的时候加*
    print(a,b,c) # 1 2 3     
    print(args)  # (4,5,6)    #调用的时候不加*

func(1,2,3,4,5,6)

打印args,是一个元祖

#计算任意个数值得累加和
def mysum(*args):
    total = 0
    for i in args:
        total += i
    print(total)
mysum(1,2,3,4,4,45,10,100)

收集普通实参,获得的是个元祖,可以针对元祖做相关运算

(2) 关键字收集形参: 专门用来收集那些多余的没人要的关键字实参

收集之后,会把多余关键字实参打包成一个字典

参数头上有2个星星

收集关键字形参,只能收集关键字实参,不能收集位置实参

def func(**kwargs):     kwargs也是自己定义的
    pass
    kwargs => keyword arguments


def func(a,b,c,**kwargs):
    print(a,b,c)
    print(kwargs) # {'f': 100, 'e': 200, 'z': 12}
func(c=1,a=3,b=10,f=100,e=200,z=12)

收集关键字形参,只能收集关键字实参

#拼接任意个数值变成字符串
"""
班长: 赵万里
班花: 马春陪
划水群众: 赵沈阳,李虎凌,刘子涛
"""
def func(**kwargs):
    strvar1 = ""
    strvar2 = ""
    # 定义职位信息
    dic = {"monitor":"班长","classflower":"班花"}
    print(kwargs)
    # 共5次循环
    for k,v in kwargs.items():
        if k in dic:
            # 将2次循环的结果通过+= 拼接在一起
            strvar1 += dic[k] + ":" + v + "\n"            
        else:
            # 将3次循环的结果通过+= 拼接在一起
            strvar2 += v + " , "
    print(strvar1.strip())
    print("划水群众:",strvar2.strip(" , "))
        
    """
    # print(k,v)
    k       v
    monitor 赵万里
    classflower 马春陪
    water1 赵沈阳
    water2 李虎凌
    water3 刘子涛
    {'monitor': '赵万里', 'classflower': '马春陪', 'water1': '赵沈阳', 'water2': '李虎凌', 'water3': '刘子涛'}
    """

func(monitor="赵万里",classflower="马春陪",water1="赵沈阳",water2="李虎凌",water3="刘子涛")

深度解读python的函数(二):https://developer.aliyun.com/article/1495708

相关文章
|
1天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
1月前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
16 0
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
1月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
45 2
|
2月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
87 8
|
2月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
64 18
|
2月前
|
Python
Python中的函数
Python中的函数
62 8
|
3月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
155 67
|
3月前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
3月前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。

热门文章

最新文章

推荐镜像

更多