【python】函数的使用
最佳答案 问答题库678位专家为你答疑解惑
一、函数与方法的区别
- 直接调用的是函数
- 通过对象点出来的是方法
在Python中,函数和方法都是一段可重复使用的代码块,可以执行特定的任务。它们之间的区别在于它们的调用方式和应用场景。
函数是独立的代码块,可以通过函数名直接调用。函数可以接受输入参数,并返回一个结果。函数可以在任何地方定义,不依赖于类或对象。
方法是类中的函数,与特定的对象关联。方法必须通过对象或类进行调用。方法可以访问对象的属性,并对其进行操作。在调用方法时,方法自动传入关联的对象作为第一个参数,通常被称为 self。
可以将函数视为独立的工具,而方法更像是与对象密切相关的行为。
下面是函数和方法的使用:
# 函数示例:
def calculate_sum(a, b):return a + bresult = calculate_sum(3, 4)
print(result) # 输出:7# 方法示例:
class Calculator:def __init__(self, value):self.value = valuedef add(self, number):self.value += numberdef get_value(self):return self.value# 创建 Calculator 对象
calculator = Calculator(10)# 调用方法
calculator.add(5)
result = calculator.get_value()
print(result) # 输出:15
二、函数的定义
- 使用关键字 def 来进行函数定义,后面指定函数名,还可在括号内指出参数。
- 在Python中,函数是一段可重复使用的代码块,用于执行特定的任务。函数通常接受输入参数,并根据参数执行相应的操作,并最终返回一个结果。
函数的定义通常包括以下几个部分:
函数头:函数头包括关键字
def
,后跟函数名和一对圆括号()
。函数名是我们给函数起的名称,用于标识和调用函数。括号内可以包含参数,用于接收函数调用时传递的输入值。函数体:函数体是函数的主要部分,包括一组执行特定任务的语句。函数体通常由缩进块组成,用于标识函数体的范围。在函数体中,可以用来处理参数、执行操作,并最终返回结果。
返回值:函数可以选择性地返回一个结果。使用关键字
return
后跟要返回的值,可以将该值传递给函数的调用者。如果没有明确指定返回值,则函数默认返回None
。
下面是函数定义示例:
def greet(name):"""打印欢迎信息,使用传入的名字"""print("Hello, " + name + "!")# 调用函数 greet("Alice") # 输出:Hello, Alice!
在以上示例中,
greet
是一个函数,接受一个参数name
,用于打印一条欢迎信息。在函数体内,使用greet
,并将参数"Alice"
传递给它。【注意】函数定义后,可以在程序的任何地方调用函数,以重复执行其中的代码块。
定义一个函数,输出两个数字相加的结果
def res(a, b):print(f'a={a}')print(f'b={b}')print(f'结果={a + b}')res(1, 2)
- Python对于参数的传入是没有类型限制的
- 不过可以通过给参数添加类型,提示调用时应传入的类型
res(a: int, b: int)
三、传参的几种方法
- 位置传参
res(1, 2)
- 关键字传参
res(a=1, b=2)
- 缺省参数
res(a: int, b: int = 10)res(1)
参数具备默认值的时候可以不传,具备默认值的参数需要放在没有默认值的参数后面
- 可变参数
def res(*nums: int):val = 0for i in nums:val += iprint(val)
def res(**nums: int):val = 0for i in nums.values():val += iprint(val)
四、函数的返回值
- 返回值不限类型,所以不需要指定返回类型
- 使用 return 关键字
- 可以通过元组的形式返回多个值
编写一个函数,接受多个参数,返回最大值,最小值与总和
def res(*nums: int):val = 0val_max = nums[0]val_min = nums[0]for i in nums:val += ival_min = i if i < val_min else val_max;val_max = i if i > val_max else val_max;return val, val_min, val_max
五、函数的注释
查看python中关于函数的说明: help()
def res(a, b):"""
两数相加
:param a: 数字
:param b: 数字
:return: 结果
"""return a + b
六、其他
1、函数嵌套:
- 定义求和函数
- 在求和函数上完成平均值函数
2、变量作用域:
- 全局变量
- 局部变量
3、递归调用:
计算1+n的和
def res(target: int):if target <= 0:return '0'if target == 1:return 1return target + res(target - 1)
计算斐波那契数列
def res(target: int):if target <= 0:return '0'if target <= 2:return 1return res(target - 1) + res(target - 2)
七、Lambda表达式
相当于匿名函数,可以简化目前的函数,在 java 中的流式操作与函数接口有体现。
//常规
Runnable r1=new Runnable() {@Overridepublic void run() {System.out.println("你好");}};//lambda表达式
Runnable r2=()->{System.out.println("你好");};
但是 python中的表达式只能存在一行代码,使用 python 中的lambda来简化函数
# 未简写
def res():return 10# 简写
res = lambda: 10
形式: lamdba 参数 : 执行操作/返回值
编写一个函数,接受两个参数,并返回最大值
def res(a, b):return a if a > b else bres = lambda a, b: a if a > b else b
使用 lambda 对字典数据进行排序
persons = [{"name": "张三", "age": 20},{"name": "李四", "age": 17},{"name": "王麻子", "age": 21}]persons.sort(key=lambda p: p['age'], reverse=True)
将一个元素中所有的值翻倍 map
nums = [1, 2, 3, 4, 5, 6, 7]m = map(lambda a: a * 2, nums)for i in m:print(i)
让集合中的对应位置进行相加
nums1 = [1, 2, 3, 4, 5, 6, 7]nums2 = [2, 3, 4, 5, 6, 7, 8]m = map(lambda a, b: a + b, nums1, nums2)for i in m:print(i)
对集合进行筛选
nums = [1, 2, 3, 4, 5, 6, 7]f = filter(lambda a: a > 5, nums)for i in f:print(i)
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"【python】函数的使用":http://eshow365.cn/6-22753-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: springboot项目多数据源导致事务报错问题
- 下一篇: 以太网——ARP协议工作原理