初学者python笔记(函数)

初学者python笔记(filter()函数完全详解) 在Python中总有些奇奇怪怪的函数,filter就是一个,但是它特别强大和实用,了解它本质才能更好得使用它。本篇文章会从最基础的函数嵌套开始分析,都是 filter 函数执行的原理,到最后就知道 filter 函数的妙处了 这里还要用到两个库函数: startswith():判断某字符串是否以参数中的字符串开头 endswith() :判断某字符串是否以参数中的字符串结尾 二者的返回值都是布尔值... 阅读详情


函数可以说是每一门编程语言的灵魂,今天总结的内容就是函数方面的。
在编程中有这样三大编程方法论:
面向过程>>>找到解决问题的入口,按照一个固定的流程去模拟解决问题的流程
函数式>>>编程语言定义的函数 + 数学意义的函数(这是非常抽象的一类)
面向对象>>>重在用一个个对象的执行去实现想要的效果(常常与面向过程结合起来,这里有一篇文章,对面向对象有非常通俗易懂的解释和案例用生活案例让你明白面向对象)

1. python中的函数参数
def test(x, *args):
	print(x)
	print(args)
	print(args[0][0])  #传入后就是一个元组,可以用索引来取值
#调用函数,并传入第二个参数为列表,函数则需要用一个带*的变量来接收,类似C语言的指针
test(1,['x','y','z'])  #当成一个列表整体传入,即元组中的列表
test(1,*['x','y','z'])  #拆开了传入,即元组中有3个元素

结果是:
1
([‘x’, ‘y’, ‘z’],)
x
1
(‘x’, ‘y’, ‘z’)
x
Ps:函数定义要习惯写在前面,因为python是从上往下执行,当你调用一个函数的时候这个函数必须是已经被定义过的,否则编译器会报错
比如这样:

def foo():
	print("from foo")
	bar()  #从上往下执行,此时bar()还未定义
foo()
def bar():
	print("from bar")
2. 一个能接收任意值的函数
#接收字典
def test(x,**kwargs):  
	print(x)
	print(kwargs)
test(1,y=2,z=3)
#能接收任意值的函数
def test(x,*args,**kwargs):  #顺序不能变:固定列表在前,字典在后面
	print(x)
	print(args,args[-1])  #索引-1可以取到列表的最后一个元素
	print(kwargs,kwargs['y'])  #'y'这个key对应的value为2
test(1,1,1,2,3,4,y=2,z=3)  
#第一个1给x,中间数字给args列表,y=2,z=3给kwargs字典

结果是:
1
{‘y’: 2, ‘z’: 3}
1
(1, 1, 2, 3, 4) 4
{‘y’: 2, ‘z’: 3} 2

3. 函数递归

就是函数中再调用本函数,即循环调用自身,但递归的效率不高

def calc(n):
    print(n)
    if int(n/2) == 0:
        return n 
    res = calc(int(n/2))  #再次调用calc()并将n除2转化成int类型后传入
    return res  #此步为终结步
r = calc(10)
print(r)
#稍微理一下里面的逻辑:
#传入10,输出10,10不满足if,将(10/2)=5传入calc();
#输出5,5不满足if,再传入(5/2)=2;
#输出2,2不满足if(因为2/2=1),传入1到calc();
#输出1,1满足if,返回1,并将返回值1赋值给res;
#注意,这是整个过程第一次返回值,在之前都只是传入值,没有返回
#最终再返回1,用r接收返回值,输出r

结果是:
10
5
2
1
1

4. 函数作用域

函数中获取全局变量: 在函数中可以用全局变量,但要修改全局变量时,则需要用以下操作获取一下:

six = 'alex-54250'
def change_name():
    global six  #获取后才可以在函数中修改全局变量
    six = 'aaaa-54250'
    print(six)
change_name()
print(six)

结果是:
aaaa-54250
aaaa-54250
而且global这种修改是永久性的,不止是在函数内有效
下面这种就不会干扰全局变量的值,如果只在函数内用,就可以如此

name = '天呐'
def a():
    name = 'wangbadan'
    print(name)  #此处输出的就是'wangbadan'
a()
print(name)  #但全局变量不变,这里结果是'天呐'
5. 函数嵌套

函数嵌套是指在函数中再定义函数,组成多重函数;
只要test()有个括号,就一定会运行,不管有没有变量去接收返回值

函数嵌套的调用(1)
def test1():
	print('in the test1')
def test():
	print('in the test')
	return test1   #返回test1这个函数,并没有运行test1,没有返回值  
res = test()
#将test运行的返回值赋值给res,即将res()作为与test()返回值同等的函数,就是test1()(因为函数即变量)
print(res)
#输出res()函数的内存地址,即test1()的内存地址
print(res())
#运行res()函数即test1(),打印出in the test1,最后再打印test1()的返回值None
函数嵌套的调用(2)
name = '天呐'
def foo():
    name = 'CMYK'  #没有获取全局变量,此处赋值无效
    def bar():
        name = 'on my god'
        print(name)
    return bar  #返回bar这个函数,但不运行bar()
a = foo()  #运行函数
print(a)
a()
#将foo的返回值bar赋值给a,使a()=bar(),(此过程没有调用bar()所以不会运行bar),
#再打印a即bar()/a()的内存地址,再运行a()即bar()打印出'wupeiqi',
#因为在bar()中输出的name局部变量name,也就是离bar()最近一级的name

结果是:
<function foo..bar at 0x002CC5D0>
on my god
若:

name = '天呐'
def foo():
	name = 'CMYK'
	def bar():
		#name = 'on my god'
		print(name)
	return bar
a = foo()
print(a)
a()

则结果是:
<function foo..bar at 0x0079C5D0>
CMYK
也就是调用bar()时,bar()内部无name的赋值,则使用name的最近一级变量’CMYK’,此变量仍然对全局变量无影响

函数嵌套的调用(3)
def foo():
    name = '昨天'
    def bar():
        name = '今天'
        def tt(): 
            print(name)
        return tt  #这里是整个嵌套函数执行的第一步,返回tt这个函数,操作是输出name
    return bar  #第二步,bar内操作是输出'今天'
bar = foo()  #该bar与foo内的一样,因为bar是foo的返回值,bar()=bar()
tt = bar()
#该tt与bar内的一样,因为tt是bar的返回值,tt()==tt(),
#已将name赋值成'今天',但并没有调用tt(),故不会打印
print(tt)  #打印tt()这个函数的地址
tt()
#调用tt,因为tt内没有name的赋值,所以往上一级找,即name='今天',打印'今天'

#函数嵌套的调用:
foo()()()
#第一次运行foo返回bar,第二次运行bar并name='今天',返回tt,
#第三次运行tt并打印name

结果是:
<function foo..bar..tt at 0x02C1A5D0>
今天
今天

总的来说,函数这方面的内容是比较抽象的,逻辑性很强,所以理解起来必定需要一些时间

初学者python笔记(map()函数、reduce()函数、filter()函数、匿名函数) 本篇是对Python中的匿名函数和map()函数、reduce()函数、filter()函数这四三大封装函数(遍历处理),以及它们的使用案例。 文末是对这几个函数用法功能的比较。 匿名函数 该函数的用法类似于C语言中的宏定义,只是这个不需要定义名字,故叫匿名函数,但它们的作用都是用来提供一个简短的函数。 print(lambda x:x+1) #打印匿名函数的内存地址 func1 = lamb... 阅读详情

相关推荐

大学四年的Python学习笔记分享之一,内容整理的比较多与仔细

目录一、创建第一个程序1.1运行 Python1.2交互模式1.3创建程序1.4运行程序1.5示例程序1.6要注意的点1.7注释1.8变量1.9类型1.10区分大小写1.11循环1.12缩进1.13缩进最佳实践1.14条件句1.15印刷1.16用户输入1.17通过语句二、数字2.1数字类型2.2布尔值 (bool)2.3浮点数(浮点数)2.4比较2.5转换数字三、字符串3.1表示文字文本3.2字符串转义码3.3字符串表示3.4字符串索引3.5字符串操作3.6字符串方法3.7字符串可变性3.8字符串可变性3.

yunyun云芸 1651

python pytorch中 .view()函数讲解

一、普通用法 (手动调整size) view()相当于reshape、resize,重新调整Tensor的形状。 import torch a1 = torch.arange(0,16) print(a1) tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]) a2 = a1.view(8, 2) a3 = a1.view(2, 8) a4 = a1.view(4, 4) print(a2) print(

欢迎关注,共同进步! 5万+

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

qq_41510657的博客 2614

【PyTorch】PyTroch中.view()函数的详细使用方法

PyTorch中的.view()函数是一个用于改变张量形状的方法。它类似于NumPy中的.reshape()函数,可以通过重新排列张量的维度来改变其形状,而不改变张量的数据。在深度学习中,.view()函数常用于调整输入数据的形状以适应模型的输入要求,或者在网络层之间传递数据时进行形状的转换。.view()函数的语法如下,shape是一个整数元组,用于指定新的张量形状,新形状的元素个数必须与原形状的元素个数相同。函数返回一个具有指定形状的新张量,但与原始张量共享数据存储,因此它们指向相同的内存区域。

开水的博客 1万+

【电驱动】永磁同步电机工作原理及分类

永磁同步电机工作原理及分类

星Yeah 的博客 7326

Android车载桌面开发实战:从CarLauncher源码解析到自定义Launcher开发(Android 11)

本文深入解析了Android 11中CarLauncher的源码架构与核心模块,并提供了从零开始定制开发车载Launcher的完整实战指南。内容涵盖车载桌面的独特定位、驾驶场景优化、多屏协同、动态内容嵌入等核心挑战,以及如何构建符合安全规范、体验流畅的自定义车载桌面应用,是车载应用开发者提升系统级定制能力的实用参考。

weixin_29266647的博客 516

Pytorch基础函数(二)变形函数——view()与view_as()

view()函数是用于对Tensor(张量)进行形状变化的函数,如一个Tensor的size是3x2,可以通过view()函数将其形状转为2x3。 但是需要注意的是进行操作的张量必须是contiguous()的,即在在内存中连续的。(不连续可以使用tensor.contiguous()操作转为连续)。 一、view()函数基本操作 函数定义:view(*args) [Ps:...

ADwenwen的博客 1万+

亿图图示(edrawmax中文版) v10.1.7pjb

edrawmax中文名叫做亿图图示,是一款非常棒的综合图形图表设计软件,既能实现流程图、架构图、工程图、思维导图等数百种专业领域图形图表的绘制,又能提供一个白板进行头脑风暴和任意编排,轻松实现数据和创意的可视化呈现。软件支持Windows、Mac、Linux及网络版,一端创作,多端同步,从而为跨端办公绘图提供新的解决方案,还兼容常用文档类的办公软件格式,包括图片、Office、PDF、Visio、Html、SVG等,尽可能的在文件格式这块满足用户多方面需求。软件支持创建260多种图表类型,拥有超过12500

qq_43293214的博客 1万+

view函数--python

view()的作用相当于numpy中的reshape,重新定义矩阵的形状。 import torch x=torch.randn(4,4) print(x) tensor([[-1.2099, 1.0978, 1.0094, 1.3966], [ 0.2889, -0.5096, 1.8754, 0.7503], [ 1.8894, 1.7621, -1.3559, 0.5547], [ 0.4342, -0.3919, 0.0501, 0.0693]]) y=x.view(16) pr

weixin_34280060的博客 1万+

Mediapipe手势识别实战——基于关节角度计算实现动态手势分类

本文详细介绍了如何利用Mediapipe进行手势识别,通过计算手指关节弯曲角度实现动态手势分类。文章从基础原理出发,讲解了关节角度计算的数学方法,并提供了Python实现代码。同时,还分享了数字手势和OK手势的识别实战经验,以及性能优化和工程实践中的关键技巧,帮助开发者快速掌握实时手势识别技术。

weixin_26891599的博客 403

跨境电商ERP开发之Shopee开发者账号申请

引言:由于电子信息技术和经济全球化的进一步发展,电子商务在国际贸易中的影响力和关键作用日渐突显,已变成中国出口贸易的市场趋势。跨境电商未来的发展前景必定是有助于减少经济成本、推动全球贸易便利化,有助于提高国内群众福祉,有助于打造良好的营商环境,从而推动经济长期健康发展。 gitee仓库地址: https://gitee.com/naturalwish/SSERP/tree/master 以下授权教学同ShopeeOpen Platform - Developer Guide 申请流程 ..

naturalwish的专栏 3640

详解Pytorch中的view函数

详解Pytorch中的view函数,通俗易懂!

信小海 1万+

2024年CSP-X复赛真题题解(T1:购物)

2024年CSP-X复赛真题题解(T1:购物)

王老师青少年编程 1180

Python初学者笔记第五期 -- (函数基础)

函数也是用于处理重复性代码问题的,这些代码是具有独立功能性的,我们可以将这些类似的代码进行一次封装(函数),之后再想去实现同样的功能时,可以直接复用曾经写到的这个函数。def 函数名(参数列表):函数体return 返回值def :定义函数的关键字函数名:自定义的函数名称,规则与标识符一致的;所有单词字母小写,单词之间用下划线分隔。参数列表:就是给函数传递的一些原始数据,函数根据这些数据去做具体的计算。参数可以不指定数据类型。函数体:就是上述说的具体的计算,今后在编写函数时,

Pi_Qiu_的博客 804

构建栅格地图matlab代码

1 使用MATLAB实现地图栅格化 效果图如下所示 图1 ...

qq_59747472的博客 4518

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【python初学者】-Random 部分函数 笔记

random函数之常见函数的笔记

qq_62074533的博客 1130

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Python初学者笔记第七期 -- (函数基础编程练习)

编写一个函数,计算一个整数各个数字的和,例如 输入234,输出9,因为2 + 3 + 4 = 9。

Pi_Qiu_的博客 554

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python def main_Python 函数 初学者笔记

定义函数1 def greet_user(username):#定义一个名为greet_user的函数,username时个形参2 print("Hello!" +username)3 #根据4 greet_user('jesse')#调用函数,'jesse'是格实参传递实参位置实参1 defgreet_user(username,day):2 print("Hello!" + u...

weixin_39945915的博客 652

Python初学者笔记第十三期 -- (常用内置函数)

本文介绍了Python中常用的内置函数,主要包括三类:输入输出类、数据类型转换类和其他实用函数。重点讲解了dir()、round()、all()、any()和filter()函数的使用方法。dir()用于查看对象属性和方法,round()实现四舍五入并支持银行家舍入法,all()和any()分别判断可迭代对象中元素是否全为真或存在真值,filter()则用于元素过滤。文章通过具体代码示例展示了这些函数的实际应用场景和注意事项。

Pi_Qiu_的博客 493

python初学者笔记(七)——求和函数总结

python经常要用到各种求和,例如列表求和,元素求和,利用函数求和,将这些方法总结发给大家!

knight0113的博客 3812

初学者python笔记(内置函数_2)

这篇初学者笔记是接着上一篇初学者python笔记(内置函数_1)的。同样都是介绍Python中那些常用内置函数的。 max()和min()的高级用法 我们都知道,max():取最大值,min():取最小值,返回值就是那个最值。 其实,它还有一些更高级的用法和细节,他们主要用在字典的键值对上 比较键值对中的value或key {'age1':17,'age4':19,'age233333':30...

Viewinfinitely的博客 504

Python初学者笔记第二期--(进制转换、输入输出函数、基本运算、基础语法练习题)

本章包括进制转换、输入输出函数、基本运算,以及配套知识理解的练习。

Pi_Qiu_的博客 1952

初学者python笔记(装饰器、高阶函数、闭包)

一个函数被定义完成后,甚至程序发布后,后期可能需要添加某些功能,但是我们不可能每次都去修改原函数的代码,这时候装饰器就可以上场了,本篇文章将会用一个个可实现的代码,由浅入深、循序渐进得阐述装饰器的强大之处 装饰器定义、作用、原则: **定义:**一个装饰函数的函数,即为其他函数添加附加功能 **作用:**给函数添加新功能,但是原来的函数代码不会被更改 **原则:**不修改被修饰函数的源代码,不修...

Viewinfinitely的博客 703

初学者python笔记(内置函数_1)

每个编程语言都有自己的内置函数,这些函数是不需要从第三方文件中导入的,可以直接使用的。也就是说,它们是Python中的基础,Python学得好不好,就看这些内置函数用得熟不熟。 基础运算函数 abs(): 取绝对值 all(): 把多个元素(列表,元组,字符串…)都进行布尔运算,都真才真(与bool()不同,这里只有一个空是True) any(): 有一真就真 bin(): 十进制成二进制 hex...

Viewinfinitely的博客 551

python初学者入门学习笔记:内置函数

内置函数我们也接触过了一些,并掌握了它们的使用,例如:print()、dict()、min()、len()等。 下面我把Python3中所有的内置函数(共68个),全部整理出来,供大家理解参考。 因为内容量较大,本篇教程只做简单描述,具体说明可以参考官方文档《Python 3.6.1 documentation》,此文档可在Python安装目录中找到,如果是默认安装,文档路径为“C:\User...

人生苦短, 还不用Python? 466

Python初学者笔记第六期 -- (变量与函数内存分析)

exe.clss总而言之,在Python中,变量(包含函数名)一律存储的数据对象在堆内存中的地址!

Pi_Qiu_的博客 698
上一篇: 初学者python笔记(元组、字典、集合详解)
下一篇: Python用20行代码实现一个验证码的输入与验证(完整源码)
鸿蒙Next
鸿蒙Next 优质创作者: python技术领域 优质创作者: python技术领域
博客等级 码龄7年 2万+粉丝 300原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值