class传参 python_Python 初学者必备的常用内置函数

ecb1b1c9b783e181795e16be4ccd5b80.png本文纲要

Python 作为一门高级编程语言,为我们提供了许多方便易用的内置函数,节省了不少开发应用的时间。目前,Python 3.7 共有 69 个内置函数,一些是我们耳熟能详的函数,另一些却不是很常见,这里主要介绍一些新手必备函数及其用法。

d650fb09e72a608bbb782825fc6fa8e9.png

为了便于说明,我把这些内置函数粗略地分为六大类:

输入输出print() open()  input()
迭代相关enumerate()  zip()
序列属性sum()  max()  min()  len()
操作序列sorted()  reversed()  range()
对象属性dir()  id()  isinstance()  type()
映射类型eval()  map()  slice()
8d947784efc257214338ec64f03e096e.png输入输出

print 函数将对象输出至控制台

print(*objects, sep=' ', end='\n', file=
sys.stdout, flush=False)

*objects 为可变参数,可以接受任意多个对象。sep 参数表示输出对象之

间的分隔符,默认为空格。

>>> print('Python', '高效编程')
Python 高效编程

分隔符为'*':

>>> print('Python', '高效编程', sep = '*')
Python*高效编程

格式化输出字符串的三种方式:

name = 'Python高效编程'
fmt1 = f'公众号:{name}'
fmt2 = '公众号:{}'.format(name)
fmt3 = '公众号:%s' %name
print(fmt1)
print(fmt2)
print(fmt3)
# 公众号:Python高效编程

open 函数打开文件并返回文件对象

open(file, mode='r', buffering=-1,
encoding=None, errors=None, newline=None, closefd=True, opener=None)

file 为文件地址,mode 为打开文件的模式,默认为 'r',表示读取文件,常用的还有:'w' 表示写入文件、'b' 表示以二进制形式打开。

常用上下文管理器 with 打开文件,f.read( ) 读取全部内容,f.readline() 读取一行内容。

with open('test.txt', 'r') as f:
   text1 = f.read()

with open('test.txt', 'r') as f:
   text2 = ''
   line = f.readline()
   while line:
       text2 += line
       line = f.readline()

assert text1 == text2
print(text1)

###############
输出内容:
Python 高效编程
Python 高效编程
Python 高效编程
Python 高效编程
###############

有时候,我们读取文件还会遇到乱码问题,可以指定编码格式:

当文件中有中文的时候,使用 'utf-8' 编码会导致异常:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb8 in position 7: invalid start byte

with open('test.txt', 'r',
       encoding='utf-8') as f:
   text1 = f.read()

这时候,我们可以尝试 'gb2312' 或者 'gbk' 编码来打开含有中文字符的文件。这时,便可以成功打开文件。

with open('test.txt', 'r',
       encoding='gb2312') as f:
   text1 = f.read()
with open('test.txt', 'w',
       encoding='gbk') as f:f.write('Python高效编程')

input 函数获取控制台输入

input([prompt])

input 可接受字符串为参数,提示用户输入。   

>>> s = input('请输入公众号名称:')
请输入公众号名称:Python高效编程
>>> s
'Python高效编程'
ecb1b1c9b783e181795e16be4ccd5b80.png迭代相关

enumerate 函数返回元素的序号与对应值

enumerate(iterable, start=0)
iterable 参数表示可迭代对象,start 参数是元素序号的起点,默认为 0。enumerate 函数的等价形式如下:
def enumerate(sequence, start=0):
 n = start
 for elem in sequence:
     yield n, elem
     n += 1
seq = ['P', 'y', 't', 'h', 'o', 'n']for i, elem in enumerate(seq):
   print(i, elem)

zip 函数用于同时迭代多个对象

zip(*iterables)

*iterable 可以接受任意多个可迭代对象

a = ["**", '**', '**']
b = ['微信公众号', '关注', 'Python高效编程']
c = a
print('#'*20)
for i, j, k in zip(a, b, c):
   print(i, j, k)
print('#'*20)

####################
** 微信公众号 **
** 关注 **
** Python高效编程 **
####################
ecb1b1c9b783e181795e16be4ccd5b80.png序列属性

序列最大值:max

序列最小值:min

序列的和:   sum

序列长度:   len

基本用法:向这四个函数中传入序列,可以得到对应属性。

import random
random.seed(21)
seq = [random.randint(0, 100) for i in range(10)]
print(seq)
# [21, 53, 88, 53, 81, 36, 61, 27, 60, 65]
print(max(seq))
# 88
print(min(seq))
# 21
print(sum(seq))
# 545
print(len(seq))
# 10

作为内置函数,可以直接传入生成器(不需要括号)作为参数:

import random
random.seed(21)
num = max(random.randint(0, 100) for i in range(10))
print(num)
# 88

可传入 key 参数,作为比较大小的依据,相当于把序列中每一个元素 item 先传入函数 key 中,将函数返回的数值作为判断对象大小的依据。

def foo(x):
   return 1. / x
max(seq, key = foo)
# 21

对于我们自定义的类型,必须实现特殊方法,才能进行 len 等操作。

__len__ 代表:len 操作,__eq__ 代表:= 操作,__lt__ 代表 < 操作。

class foo:
   def __init__(self, num, seq):
       self.num = num
       self.seq = seq
       
   def __len__(self):
       return len(self.seq)
       
   def __eq__(self, other):
       return self.num == other.num
       
   def __lt__(self, other):
       return self.num < other.num

>>> f1 = foo(18, [1, 4, 6])
>>> f2 = foo(21, [1, 7, 9, 10])
>>> f1 < f2
True
>>> f1 > f2
False
>>> f1 == f2
False
>>> f3 = foo(18, [9, 9, 0, 7])
>>> f1 == f3
True
>>> len(f1)
3
>>> len(f2)
4
ecb1b1c9b783e181795e16be4ccd5b80.png操作序列

    range 函数生成序列

range(start, stop[, step])

  • start 可选参数,默认为 0 ,表示序列起点

  • stop 必选参数,表示序列终点,不包括终点

  • step 可选参数,序列的步长,默认为 1

>>> range(6)
range(0, 6)
>>> list(range(6))
[0, 1, 2, 3, 4, 5]
>>> list(range(0, 6, 2))
[0, 2, 4]

range 函数生成的对象可以迭代,和列表很类似,_ 表示废弃变量(为了避免污染变量环境):

for _ in range(3):
 print('Python高效编程')

reversed 函数可以将序列逆置

reversed 可以将序列逆置,包括元组、字符串、列表。对于列表和字符串的逆置,使用 list[::-1] 或者slice()更加方便。

import random
random.seed(21)
seq = [random.randint(0, 100) for i in range(10)]
print(seq)
# [21, 53, 88, 53, 81, 36, 61, 27, 60, 65]
reversed(seq)
print(list(reversed(seq)))
# [65, 60, 27, 61, 36, 81, 53, 88, 53, 21]

字符串逆置:

>>> a = 'Python高效编程'
>>> a[::-1]
'程编效高nohtyP'
>>> ''.join(reversed('Python高效编程'))
'程编效高nohtyP'

sorted 函数可以对序列进行排序

sorted(iterable, *, key=None, reverse=False)

sorted 不同于 list.sort 操作(原地排序),返回一个新的有序序列,原序列保持不变。* 表示仅限关键字参数(keyword-only),也就是说,key、reverse 参数只能通过关键字传参,而不能通过位置传参。reverve 参数表示逆置操作,key 与之前 len 中的 key 参数类似,是函数排序的依据。 

>>> sorted([9, 6, 2, 3, 6])
[2, 3, 6, 6, 9]
ecb1b1c9b783e181795e16be4ccd5b80.png对象属性

dir 函数返回属性列表

id  函数返回对象地址

isinstance  判断对象的类型

type 返回对象的类型

class foo:pass
>>> dir(foo)
['__class__','__delattr__','__dict__','__dir__',
......'__str__','__subclasshook__','__weakref__']# 创建实例
>>> f = foo()
>>> type(foo)
__main__.foo
>>> isinstance(f, foo)
True
>>> id(f)
2135099584864

ecb1b1c9b783e181795e16be4ccd5b80.png映射类型

eval 解除引号的束缚

map 应用函数于单个对象

slice 生成切片

eval 可以去除字符串的单引号,从而获取引号内部内容。下面的演示展示了,如何使用 eval 函数获取字符串中的字典:

>>> info = '{"name": "LiHua", "age": 12}'
>>> eval(info)
{'name': 'LiHua', 'age': 12}
>>> info_dict = eval(info)
>>> type(info_dict)
dict

map 将传进来的函数应用于序列中的每一个元素,并返回迭代器。

map(function, iterable, ...)

举例来说,map 就是对 seq 列表中的每一个元素 item 进行 int 操作(int(item))。匿名函数同理,就是对序列中的每一个元素进行加 2 的操作。

>>> seq = [1.5, 4.5, 9.1]
>>> list(map(int, seq))
[1, 4, 9]
>>> list(map(lambda x: x + 2, seq))
[3.5, 6.5, 11.1]

slice 函数为切片操作命名,使得切片操作更加清晰明了。

slice(start, stop[, step])

start 为起点,stop 为终点,step 为步长。使用该操作,使得截取有规律的文本内容变得很轻松。特别是长文本,使用 slice 函数更加清晰易懂。

>>> text = '微信公众号 Python高效编程'
>>> name = slice(0, 6)
>>> text[name]
微信公众号 
>>> content = slice(6, 16)
>>> text[content]
Python高效编程

这篇文章到此结束了,大家可以趁热打铁,多多练习。觉得不过瘾的小伙伴,可以继续学习我们公众号中的python教程。

作者:flywind

来源:Python高效编程


871944207c5f64472c4891520cc6f580.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线上流量越发昂贵,如何通过裂变营销实现业务增长?

简介&#xff1a; 公域流量流量越来越聚集于头部的媒体同时投放的费用越来越高。如&#xff1a;在游戏电商或金融行业&#xff0c;在广告投放拉新方面成本达到了100元左右。除了头部媒体的流量以外&#xff0c;在中长尾的流量上&#xff0c;这部分虽然成本低&#xff0c;但转化…

钉钉总裁不穷首谈产品观:To B产品用户不只是CEO

编辑 | 宋慧 出品 | CSDN云计算 头图 | 钉工牌发布现场图 8月24日&#xff0c;钉钉正式对外发布首个数字工牌产品“钉工牌”&#xff0c;这是行业内首个整合了工作身份验证与支付功能的数字工牌产品。以钉工牌为产品思考的原点&#xff0c;阿里巴巴集团副总裁、钉钉总裁叶军&a…

Serverless在游戏运营行业进行数据采集分析的最佳实践

简介&#xff1a; 这个架构不光适用于游戏运营行业&#xff0c;其实任何大数据采集传输的场景都是适用的&#xff0c;目前也已经有很多客户正在基于Serverless的架构跑在生产环境&#xff0c;或者正走在改造Serverless 架构的路上。 众所周知&#xff0c;游戏行业在当今的互联网…

我对技术架构的理解与架构师角色的思考

简介&#xff1a; 架构师一定要有技术的广度。大家一定要学会积累&#xff0c;积累到一定的程度以后&#xff0c;你会做到无师自通。 先自我介绍一下&#xff0c;我叫道延&#xff0c; 2014年进入阿里&#xff0c;在阿里通信呆了接近两年。2016年底到了业务平台&#xff0c;当时…

2018年计算机CPU纳米制程,联发科疯狂堆核计划曝光:7纳米制程,12核CPU

【PConline 资讯】联发科疯狂堆核的脚步并未停歇&#xff0c;在商用量产10纳米十核处理器——Helio X30之后&#xff0c;联发科瞄准了更先进的制程、更密集的CPU核心。据台湾电子时报(DIGITIMES)消息&#xff0c;联发科将首次集成12核CPU&#xff0c;预计第二季度由台积电的7纳…

佳能hdr_烧设备无止境不代表随时败家,佳能EOS 5D4“闲鱼”翻身取代200D

2019年最后一天马上翻篇&#xff0c;想过去看今朝我此起彼伏。待到明年赏花浪漫时&#xff0c;我希望我会笑得更开心一点。今天跟大伙说说刚从闲鱼入手的5D4。烧设备可以&#xff0c;烧相机要出人命&#xff0c;看大佬们三天两头往家里败镜头&#xff0c;我的荷包可撑不住。第一…

浅谈数据中台安全体系构建思路

作者&#xff1a;王振东来源&#xff1a;绿盟科技 战略规划部 摘要数据中台是大数据业务体系数据规约化建设的核心场景&#xff0c;数据中台既搭建大量数据归集的相关设施&#xff0c;又针对数据开展大量治理、运维、分析、加工、共享、开放等交互事务&#xff0c;数据暴露面、…

滴滴 Flink-1.10 升级之路

简介&#xff1a; 滴滴实时计算引擎从 Flink-1.4 无缝升级到 Flink-1.10 版本&#xff0c;做到了完全对用户透明。并且在新版本的指标、调度、SQL 引擎等进行了一些优化&#xff0c;在性能和易用性上相较旧版本都有很大提升。 一、 背景 在本次升级之前&#xff0c;我们使用的…

苹果新算法已混进 iOS 14.3!CSAM 检测技术再遭网友争议

整理 | 禾木木出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;苹果宣布即将推出 CSAM 检测系统时&#xff0c;遭到了 4000 多个组织及个人的公开反对&#xff0c;他们质疑苹果会破坏用户隐私和端到端加密机制。一位 Reddit 用户发现 CSAM 算法竟已被悄悄地隐…

数字化时代,阿里云云效如何构建下一代研发协作工具平台?

简介&#xff1a; 本次分享主要由四部分组成&#xff1a; 1、企业在成长过程中遇到的研发效能困境&#xff1b; 2、研发管理从信息化走向数字化的路径&#xff0c;以及背后的逻辑&#xff1b; 3、云原生和 AI 两项新技术在研发平台上的落地&#xff1b; 4、结合阿里巴巴自身案例…

珠海小学计算机比赛,欢聚一堂 共叙佳话 —— 参加珠海市中小学信息技术工作年会纪要...

欢聚一堂 共叙佳话——参加珠海市中小学信息技术工作年会纪要2012年12月22日&#xff0c;香洲区中小学信息技术工作室一行8人赴金湾一小&#xff0c;参加了珠海市教育学会中小学信息技术教学专业委员会组织的第三届年会&#xff0c;会议分为四项议程。一、近两年工作总结上午&a…

安谋科技发布新业务品牌“核芯动力”,先手布局智能计算产业

安谋科技&#xff08;中国&#xff09;有限公司&#xff08;“安谋科技”&#xff09;举行“创芯生&#xff0c;赋未来” 新业务品牌战略发布会&#xff0c;重磅发布“双轮驱动”战略以及新业务品牌“核芯动力”。新业务品牌的发布代表安谋科技引领智能计算产业发展趋势、推动计…

技术方案设计的方法论及案例分享

简介&#xff1a; 怎么去体现技术方案设计的深度是大家普遍关心的一个问题&#xff0c;这个问题不是个例问题&#xff0c;因此本文主要分享下作者个人的一些观点和看法。 怎么去体现技术方案设计的深度是大家普遍关心的一个问题&#xff0c;这个问题不是个例问题&#xff0c;因…

第四范式:现代存储架构下的系统优化实践

8月21日&#xff0c;白玉兰开源联合示说网主办的“开源大数据技术线上meetup”特邀约大数据领域的前沿技术专家&#xff0c;就大数据存储的关键技术、挑战和当前应用展开交流讨论&#xff0c;阵容强大、内容全面。第四范式体系架构科学家&#xff0c;高性能计算Team leader卢冕…

穿越疫情,阿里云3000万补贴助力中小企业寒冬突围

简介&#xff1a; 2021年&#xff0c;活下去&#xff0c;是所有中小企业的一致心愿。冬将尽&#xff0c;春将来。我们也都在迫切等待着百花齐放的春天到来&#xff0c;阿里云愿和广大中小企业一起守望相助&#xff0c;共待山河无恙&#xff0c;春暖花开&#xff01; 简介&#…

KubeVela:标准化的云原生平台构建引擎

简介&#xff1a; 本文由“GO 开源说”第三期 KubeVela 直播内容修改整理而成&#xff0c;视频内容较长&#xff0c;本文内容有所删减和重构。 KubeVela 的背景 KubeVela 是一个基于 Go 语言开发的云原生平台级开源项目&#xff0c;这个项目是去年 11 月中旬正式发布的。虽然发…

漫画:什么是自动驾驶?

作者&#xff1a;小灰来源&#xff1a;程序员小灰什么是自动驾驶自动驾驶&#xff0c;也被称为无人驾驶&#xff0c;顾名思义&#xff0c;是指交通工具在没有人类操作的情况下&#xff0c;也能够完成环境的感知与导航&#xff0c;顺利到达目的地。从传统的手动驾驶到智能的自动…

一场关于动态化开发实践的技术探讨

简介&#xff1a; 开发团队在面临业务高并发需求时&#xff0c;如何对技术模型进行迭代升级&#xff1f; 在过去的一年中&#xff0c;经过跟支付宝移动端团队和广大开发者的交流和沟通&#xff0c;我们了解到大家在涉及到关于移动应用跨端开发的过程中遇到的一些问题&#xff0…

云效故障定位研究论文被ICSE 2021 SEIP track收录

近期&#xff0c;由阿里云云效团队联合复旦大学CodeWisdom研究团队、阿里技术风险部安全生产团队&#xff0c;合作完成的论文《MicroHECL: High-Efficient Root Cause Localization in Large-Scale Microservice Systems》被ICSE 2021 SEIP track录用。本文针对大规模微服务系统…

CSDN 开学见面礼!3 周带你 Get 大厂工程师基础能力

暑假即将结束&#xff0c;金秋开学季来袭。别让年轻的自己虚度光阴&#xff0c;现在加入C友会&#xff0c;大厂CTO级别导师陪你加buff&#xff01;10&#xff0b;场考前辅导&#xff0c;50个任务文档&#xff0c;600&#xff0b;分钟大咖讲解与答疑&#xff0c;3周带你掌握大厂…