Python 初学者必备的常用内置函数

本文纲要。

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

这里头呢, 咱们为了好说清楚, 就把这些已经放在里面的函数, 按照一个大致的情况, 把它们分成六个不同的种类出来, 以便让大家都能明白。

使用print()来输出, 使用open()进行打开操作, 以及使用input()来获取输入。

在进行迭代相关操作的时候, 去使用那个叫做zip()的函数。

序列属性sum() max() min() len()

执行那个被称为操作序列的动作, 然后调用一下range这个函数。

通过对象属性 dir 来获取相关信息, 同时使用 id 来查看标识, 接着调用 type来确认类型。

把那个评估执行的操作, 还有这个地图函数的处理, 以及切片操作的内容, 统统都列出来。

输入输出

我们使用print这个函数, 来把那个对象给输出到控制台里。

复制代码
print(*objects, sep=' ', end='\n', file=

sys.stdout, flush=False)

这个符号是用来表示可变参数的, 它的意思是能够接受任意多的对象。参数sep的作用是表示输出对象之。

在默认的情况下, 用来作为分隔符的是空格。

复制代码
>>> print('Python', 'Python')

Python Python

分隔符为'*':

复制代码
>>> print('Python', 'Python', sep = '*')

Python*Python

现在的人们在格式化输出字符串的时候, 通常会用到三种方法。

复制代码
name = 'Python'

fmt1 = f'Python:{name}'

fmt2 = 'Python:{}'.format(name)

fmt3 = 'Python:%s' %name

print(fmt1)

print(fmt2)

print(fmt3)

这个函数是用来打开文件的, 并且它会返回一个文件对象。

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

file这个变量是文件的地址, mode是打开文件的时候使用的模式, 默认为'r',这个模式表示读取文件。除了'r'以外, 常用的还有: 'w'可以表示写入文件、'b'则表示以二进制形式打开。

常用的方式是通过使用上下文管理器 with 来打开文件, 然后调用 f.read() 这个方法去读取全部内容, 又或者选择用 f.() 这种方法来单独读取一行内容。

复制代码
with open('test.txt', 'r')PythonPythonPythonPythonPythonPythonPythonPython 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)

有时候, 我们在进行文件的读取操作之候, 还会遭遇乱码这样的情况发生, 在这个时候, 可以明确地去指定编码格式:

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

复制代码
with open('test.txt', 'r',

encoding='utf-8') as f:

text1 = f.read()

这个时候, 大伙儿可以把 '' 或者 '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:')

Python:Python

>>> s

'Python'

迭代相关

当函数完成执行后, 它会将那些元素的序号以及和这些序号相对应的值一并返回出来给大家。

复制代码
enumerate(iterable, start=0)

这个参数它代表的就是一个可以迭代去遍历的对象, 那个叫做 start 的参数呢, 它就是用来表示那个元素序号从哪里开始算起的, 在默认的情况下, 它这个起点是等于 0 的。

这个函数的其他形式的表达, 其实就是下面的这些内容。

复制代码
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)

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

复制代码
a = ["**", '**', '**']

b = ['Python', 'Python', 'Python']

c = a

print('#'*20)

for i, j, k in zip(a, b, c):

print(i, j, k)

print('#'*20)

序列属性

序列的最大值, 它是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那个符号, 它代表的是进行长度计算这样的动作, 然后等于号那个东西, 它用来代表相等判定这个操作, 至于小于号, 它就代表着大小排序中小于这种关系操作。

复制代码
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

操作序列

range这个函数, 它的工作是什么呢, 说白了就是去生成一个序列。

复制代码
range(start, stop[, step])

>>> 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')

函数啊, 它呢是可以把这个序列给逆着放一下然后变一个顺序的。

我们可以对序列执行逆置操作, 这个序列可以是元组、字符串或者列表。如果要对列表和字符串进行逆置的话, 使用 list 这种功能或者是 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]

'Python'

>>> ''.join(reversed('Python'))

'Python'

那个函数, 是能够对序列来进行排序的操作的。

复制代码
sorted(iterable, *, key=None, reverse=False)

这个操作和 list.sort 操作是不一样的,因为 list.sort 会原地进行排序, 而它则会返回一个新的有序序列, 同时原序列还会保持不变的。

*在这里表示的是仅限关键字参数, 也就是所谓的-only, 这意味着 key、参数的传入只能采用关键字传参的方式, 绝对不能通过位置传参的方式进行。那个参数的存在是为了表示逆置操作, 而 key和之前 len函数中的 key参数是类似的关系, 它的主要作用是作为函数排序时候的依据。

复制代码
>>> sorted([9, 6, 2, 3, 6])

[2, 3, 6, 6, 9]

对象属性

dir 这一个函数呢, 它是负责把属性列表给返回出来的。

id 函数返回对象地址

在进行判断时, 需要对对象的类型予以确认。

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]

Python

>>> content = slice(6, 16)

>>> text[content]

Python

这篇文章到这里就是彻底结束了, 所以大家可以趁着这个热度还没有散掉的时机, 多多地进行相关的练习。

相关推荐
OnlineProxy1 小时前
移动应用数据爬取:通过模拟器与流量嗅探对 API 进行逆向工程
爬虫·python·httpx
染指11101 小时前
162.Agent-LangGraph-检查点的作用
人工智能·python·langchain·agents
我命由我123452 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
xixingzhe22 小时前
图表中同比与环比的区别:看趋势还是看变化?
开发语言·python
forest_092 小时前
当 AI 搜索开始「自我进化」,谁来进化它的核实?——「已核实」结论复核器:3 条结论挖出 2 个洞(附可运行代码)
人工智能·python·机器学习·prompt·agi
小小张说故事3 小时前
Python 的 str 为什么设计成不可变?拆开字符串驻留、字符串池,以及 += 拼接到底慢在哪
后端·python
ljt27249606613 小时前
Python笔记(十一)--Numpy(一)
笔记·python·numpy
时早玖沐3 小时前
KOOK「找不到语音频道」:同一个错误假设,我犯了三次
python·开源·ai编程
_冷眸_3 小时前
Python 调用大模型 API:最小请求、Base URL 和 401/404 排查
开发语言·人工智能·python