本文纲要

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

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

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

输入输出

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' %nameprint(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 == text2print(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高效编程'

迭代相关

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

enumerate(iterable, start=0)

iterable 参数表示可迭代对象,start 参数是元素序号的起点,默认为 0。enumerate 函数的等价形式如下:

def enumerate(sequence, start=0):  n = start  for elem in sequence:      yield n, elem      n += 1seq = ['P', 'y', 't', 'h', 'o', 'n']for i, elem in enumerate(seq):   print(i, elem)

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

zip(*iterables)

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

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

####################** 微信公众号 **** 关注 **** Python高效编程 **####################

序列属性

序列最大值:max

序列最小值:min

序列的和:   sum

序列长度:   len

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

import randomrandom.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))# 88print(min(seq))# 21print(sum(seq))# 545print(len(seq))# 10

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

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

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

def foo(x):    return 1. / xmax(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 < f2True>>> f1 > f2False>>> f1 == f2False>>> f3 = foo(18, [9, 9, 0, 7])>>> f1 == f3True>>> len(f1)3>>> len(f2)4

操作序列

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 randomrandom.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]

对象属性

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

映射类型

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高效编程

这篇文章到此结束了,大家可以趁热打铁,多多练习。觉得不过瘾的小伙伴,可以打开历史文章继续学下去。


历史文章:

一些面试想法豆瓣已经玩烂,用爬虫揭开IMDB电影背后的秘密

和160位小伙伴一起学Python

python len函数_知识清单Python必备的69个函数,你掌握了吗?相关推荐

  1. python sorted下标_全!Python基础之原生数据类型、判断和循环、函数和文件操作合集...

    长文预警! Python基础系列会将基础内容大致分为三到五个板块,每块着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下:如果你想入门Python, ...

  2. python union函数_如何掌握Python union()方法及怎么用?

    不断学习python的过程里,总能遇到各种形形色色的函数或者方法,本章给大家带来python union的用法,具体内容如下: union()方法 描述:union() 取并集,效果等同于 | ,重复 ...

  3. [转载] python中union函数_如何掌握Python union()方法及怎么用?

    参考链接: Python set集合 intersection() 不断学习python的过程里,总能遇到各种形形色色的函数或者方法,本章给大家带来python union的用法,具体内容如下: un ...

  4. python中union函数_如何掌握Python union()方法及怎么用?

    不断学习python的过程里,总能遇到各种形形色色的函数或者方法,本章给大家带来python union的用法,具体内容如下: union()方法 描述:union() 取并集,效果等同于 | ,重复 ...

  5. python从零开始进阶_从零开始学Python - 第020课:函数使用进阶

    在之前的课程中,我们讲到过关于函数的知识,我们还讲到过Python中常用的数据类型,这些类型的变量都可以作为函数的参数或返回值:通过前几节课的学习,我们又知道了写在类中的函数通常称之为方法,它代表了类 ...

  6. python zip函数_相当于Python的zip函数

    下面是一个更时髦的ECMAScript 6版本:zip= rows=>rows[0].map((_,c)=>rows.map(row=>row[c])) 插图等价物到Python{z ...

  7. 什么是python的内置函数_什么是python内置函数

    python的内置函数截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.那今天我们就一起来认识一下python的 ...

  8. python match函数_什么是python re.match函数?(实例解析)

    在这篇文章之中我们来了解一下关于python之中的正则表达式,有些朋友可能是刚刚接触到python这一编程语言,对于这一方面不是特别的了解,在接下来的文章之中我们来了解一下python中re.matc ...

  9. python中从小到大排序的函数_深入理解Python中的排序函数

    由于 Python2 和 Python3 中的排序函数略有区别,本文以Python3为主. Python 中的排序函数有 sort , sorted 等,这些适用于哪些排序,具体怎么用,今天就来说一说 ...

最新文章

  1. OpenCV中OpenCL模块函数
  2. 24小时学通linux视频教程下载
  3. 百练OJ:2972: 确定进制
  4. Eclipse——Maven项目工程无法编译但可以运行解决方案
  5. C++11- const, const expression和constexpr
  6. [Python]网络爬虫(七):Python中的正则表达式教程(转)
  7. kafka应用场景Kafka VS Flume
  8. dedecms采集织梦免写规则登陆模块软件
  9. 基于Java的办公用品管理系统的设计与实现
  10. linux virbr0是什么意思
  11. 阿里云服务器可以搭建游戏吗?
  12. 科研论文画图技巧分享!超级实用!
  13. Traceback (most recent call last):
  14. 前端学习笔记 HTML5 保姆级教程
  15. windows计划任务执行powershell脚本
  16. 骁龙处理器排名天梯图2022
  17. ORB-SLAM2源码特征点提取
  18. 前端重点---DNS和CDN
  19. 今天试着用原生axios以及jquery下的axios请求数据
  20. 在Python中,查看torch、cuda和cudnn的版本

热门文章

  1. SQL Server里那些我们应该知道的系统存储过程
  2. Yarn资源分配示例
  3. golang select default continue_Go并发(四):select篇
  4. oracle的parameters怎么用,oracle普通用户使用show parameter方法
  5. 多元线性回归算法python实现_手写算法-Python代码推广多元线性回归
  6. 【pytorch】model.train和model.eval用法及区别详解
  7. [深度学习基础] 1. 图像识别问题的挑战及数据驱动过程
  8. OpenCV中像素逻辑运算:逻辑或运算
  9. 金融行业容器平台落地路径:敏捷响应业务更迭
  10. 线程队列,线程池和协程