Python(二十四)python函数(1)

简介: (2):以字典的形式存储已命名的参数(字数可变的关键参数)加了两个星号 ** 的参数会以字典的形式导入。存放已命名的变量参数。python

Python函数的定义与其他语言都有不同。

定义函数的时候要遵循以下简单的规则:

1.      函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。

2.      任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。

3.      函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

4.      函数内容以冒号起始,并且缩进。

5.      return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

一:语法

python

复制代码

def 函数名(参数列表):
    函数体
及调用二:函数实例

scss

复制代码

def first():
    print("我的第一个函数")

调用:

scss

复制代码

first()
参数三:函数

image.png

1:传递参数

python

复制代码

# 函数参数
def sumToNumber(a,b):
    sum = a + b
    print("%d + %d = %d" % (a,b,sum))
sumToNumber(10,20)

2:传递可变对象及不可变对象

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

不可变类型: 变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变 a 的值,相当于新生成了 a。

可变类型: 变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

python 函数的参数传递:

不可变类型: 类似 C++ 的值传递,如 整数、字符串、元组。如 fun(a),传递的只是 a 的值,没有影响 a 对象本身。如果在 fun(a))内部修改 a 的值,则是新生成来一个 a。

可变类型: 类似 C++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后 fun 外部的 la 也会受影响

python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

(1):传递可变对象

python

复制代码

# 定义一个列表
lists = ["one","two","three"]
# 定义一个函数传递可变参数
def changeable(param):
    param[1] = "twotwo"
print(lists)
changeable(lists)
print(lists)

输出:

['one', 'two', 'three']
['one', 'twotwo', 'three']

(2):传递不可变对象

python

复制代码

# 传递不可变参数
abc = 123456
# id函数输出变量在内存中的地址
def noChangeAble(param):
    # 此时变量的地址还跟之前的相同
    print(id(param))
    param = 654321
    # 这是一个新的地址
    print(id(param))
print(id(abc))
noChangeAble(abc)

输出:

1532489914768
1532489914768
1532489915376

3 :默认参数

我们可以给函数的参数付默认值,这里要注意,当多个参数的时候,有默认值的参数要放在最后,否则会报错,这个好像其他语言也是一样的。

python

复制代码

# 默认值参数函数
def sumToNumberMo(a,b = 10):
    sum = 2 * a + 2 * b
    print("2 * %d + 2 * %d = %d" % (a,b,sum))
sumToNumberMo(10)

输出:

2 * 10 + 2 * 10 = 40

4 :不定长参数

(1):以元组的形式存储未命名的参数(字数可变的位置参数)

加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

注意,元组只能存放未命名的参数。

python

复制代码

# 以元组形式传递不定长参数
def nolongtuple(param,*tuples):
    print(param)
    print(tuples)
nolongtuple(10,20,30,40)
# 这样写会报错
# nolongtuple(10,a=20,b=30,c=40)

输出:

10
(20, 30, 40)

(2):以字典的形式存储已命名的参数(字数可变的关键参数)

加了两个星号 ** 的参数会以字典的形式导入。存放已命名的变量参数。

python

复制代码

# 以字典的形式存储
def nolongdict(param,**dict):
    print(param)
    print(dict)
nolongdict(10,a=20,b=30,c=40)
# 这样写会报错
# nolongdict(10,20,30,40)

输出:

10
{'a': 20, 'b': 30, 'c': 40}

5 :以关键字形式传入

单独一个 * 放在参数中,那么从这个 * 之后,则必须使用关键字传入。

kotlin

复制代码

def fun(a,b,*,c,d):
    print(a)
    print(b)
    print(c)
    print(d)
# c,d必须用 关键字参数传入,否则报错
# fun(1,2,3,4)
fun(1,2,c=3,d=4)
fun(a=1,b=2,c=3,d=4)

6:总结:函数传参的七种方式

css

复制代码

# 第一种传参方法
def fun1(a,b=10):
    print(a)
    print(b)
fun1(10)
# 第二种传参方法  个数可变的位置形参  以元组的形式传递
def fun2(*param):
    print(param)
fun2(10,20,30,40)
# 第三种传参方法  个数可变的关键形参   以字典形式传递
def fun3(**param):
    print(param)
fun3(a=1,b=2,c=3)
# 第四种传参方法  关键字形参
def fun4(a,b,c,d):
    print(a)
    print(b)
    print(c)
    print(d)
fun4(1,2,3,4)
# 第五种
def fun5(a,*,b,c):
    print(a)
    print(b)
    print(c)
fun5(1,b=2,c=3)
# 第六种
def fun6(a,*,b,c):
    print(a)
    print(b)
    print(c)
fun6(1,b=2,c=3)
# 第七种 ,关键字传参
def fun7(a,*,b,c,**param):
    print(a)
    print(b)
    print(c)
    print(param)
fun7(1,b=2,c=3,d=1,e=2,f=3)
# 第八种
def fun8(a,b=10,*param):
    print(a)
    print(b)
    print(param)
fun8(1,2,3,4,5)
# 第九种
def fun9(a,b,c,*param):
    print(a)
    print(b)
    print(c)
    print(param)
fun9(1,2,3,4,5)
# 第十种
def fun10(a,b=10,*param,**params):
    print(a)
    print(b)
    print(param)
    print(params)
fun10(1,2,3,4,5,c=11,d=22)

目录
相关文章
|
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`目录,并重启应用。最终成功加载函数列表。

热门文章

最新文章

推荐镜像

更多