Python自定义函数需要注意的问题

本文探讨了Python自定义函数的几个关键点:缩进规则、遍历操作、返回值处理、可变参数、局部与全局变量的区别以及Lambda函数的使用。通过实例详细解释了如何正确使用return、range()函数、全局变量以及filter、map、reduce和apply等高阶函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python自定义函数需要注意的问题:
1.缩进。一个语句块要用相同的缩进,两个缩进相同的逻辑行可以看做可以并列的关系,不可能是所属关系。
return需要跟for对齐,否则
在这里插入图片描述
在这里插入图片描述
2.遍历。range(n) 代表的是从0开始,遍历到n-1,步长为1
range(1,n+1) 代表从1开始,遍历到n 步长为1
range(1,n+1,2)代表从1开始,遍历到n 步长为2、
3.自定义函数后可以返回一个值(return)
return保留字用来传递返回值
函数可以有返回值也可以没有
可以有return 也可以没有

4.双参数 可变参数传递 B表达不确定的因素
如果 for j in n
#加上
代表不确定给的数值,但是不加会返回错误,会把n看做int类型
如果for range in(1,n)
则不需要加
,示例如下
HR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N1cGVyX2hvbmc=,size_16,color_FFFFFF,t_70)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 定义了2个参数 但是给了3个值????不确定怎么处理在这里插入图片描述

6.局部变量与全局变量
基本数据变量
规则一:局部变量和全局变量是不同的变量
局部变量是函数内部的占位符 与全局变量可能重名但不同
函数运算结算后 局部变量被释放

用global在局部变量中使用全局变量—声明
n,s=10,100 =====— ns为全局变量
def fact(n): =====— 局部变量
s=1 =====—局部变量
for i in range(1,10): 局部变量
s*=I =====— 局部变量
return s =====—局部变量
print(fact(n),s) =====— 此时S是全局变量
》》》362880 100
注意:fact(n) 只有被return才能被传递
如果不return print(fact(n))为None

如果在函数内部使用全局变量 用global
n,s=10,100 =====— ns为全局变量
def fact(n): =====— 局部变量
*global s =====—全局变量*
for i in range(1,10): 局部变量
s*=I =====— 局部变量
return s =====—局部变量
print(fact(n),s) =====— 此时S是全局变量
》》》36288000 36288000

规则二:局部变量是组合数据类型并且未创建,等同于全局变量
ls=[“f”,“F”]
def func(s):
ls.append(s) append 指的是ls新增一个s
return
func(1)
print(ls)
》》》[‘f’, ‘F’, 1]
因为ls在函数中没有真实创建 所以 在函数中的ls等于全局变量
但是如果在函数中真实创建了ls 则返回的是全局变量 见下例

ls=[“f”,“F”]
def func(s):
ls=[] 真实创建了ls
ls.append(s)
return
func(1)
print(ls)
》》》[‘f’, ‘F’]

总结:如果组合数据类型在函数中被真是创建 则不同于全局变量 如果函数结束 局部变量即被释放。如果组合类型没有真实创建 则等同于全局变量

在这里插入图片描述
7、Lambda函数
能够返回函数名作为结果
Lamda 保留自定义 函数名是返回结果
Lamda 参数:表达式
f=lamda x,y:x+y

f(1,2)
3

应用:一般使用 def return 谨慎使用lambda 主要用于特定函数或方法的参数
有固定使用方式

单元小结:
Def 定义函数 lambda定义匿名函数
可选参数 注意 定义时要赋予初值 名称的参数传递
Return 返回多个结果
保留字global声明全局变量
基本数据类型和组合数据类型的规则

Python-lambda匿名函数,以及filter、map、reduce、apply函数
转载自链接:
http://www.360kuai.com/pc/97528ae9851744087?cota=4&kuai_so=1&sign=360_a9931de8&refer_scene=so_1
lambda 匿名函数
lambda 函数的语法比较简单,形式为:lambda 参数列表: 表达式

sum = lambda x,y:x+y

sum(6+9)

filter 函数
功能: filter的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数。

调用: filter(function,sequence),function可以是匿名函数或者自定义函数,它会对后面的sequence序列的每个元素判定是否符合函数条件,返回True或者False,从而只留下True 的元素;sequence可以是列表、元组或者字符串。

例子:

x = [1,2,3,4,5]

list(filter(lambda x:x%2==0,x)) # 找出偶数。python3.*之后filter函数返回的不再是列表而是迭代器,所以需要用list转换。

输出:

[2, 4]

map 函数
功能: 求一个序列或者多个序列进行函数映射之后的值,就该想到map这个函数,它是python自带的函数,在python3.*之后返回的是迭代器,同filter,需要进行列表转换。

调用: map(function,iterable1,iterable2),function中的参数值不一定是一个x,也可以是x和y,甚至多个;后面的iterable表示需要参与function运算中的参数值,有几个参数值就传入几个iterable。

例子:

x = [1,2,3,4,5]

y = [2,3,4,5,6]

list(map(lambda x,y:(x*y)+2,x,y))

输出:

[4, 8, 14, 22, 32]

reduce 函数
功能: 对一个序列进行压缩运算,得到一个值。但是reduce在python2的时候是内置函数,到了python3移到了functools模块,所以使用之前需要 from functools import reduce

调用: reduce(function,iterable),其中function必须传入两个参数,iterable可以是列表或者元组

例子:

x=[1,2,3,4,5]

from functools import reduce

reduce(lambda x,y: x+y, x)

apply 函数
功能: 是pandas中的函数,应用对象为pandas中的DataFrame或者Series。大致有两个方面的功能:一是直接对DataFrame或者Series应用函数,二是对pandas中的groupby之后的聚合对象apply函数

调用: apply(function,axis),function表明所使用的函数,axis表明对行或者列做运算

例子:

import numpy as np

import pandas as pd

a = np.random.randint(low=0,high=4,size=(2,4))

data = pd.DataFrame(a)

data.apply(lambda x:x*10)

简而言之,filter和map都是python内置的函数,可以直接调用,reduce在functools模块,apply在pandas模块。

想知道当前程序或是进程运行到某个地方时,内存里有哪些变量,获取他们的name 列表:

dir()

删除单个变量

del x # 删除变量 x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值