大家好,我又来了!经过前面一些篇幅介绍Python函数一些概念后,我们花点时间来学习一下Python的内置函数吧。这些内置函数经过开发团队的千锤百炼,如今已是非常稳定和高效,我们随处拿之即用。
〇、参考说明
本专栏简介及目录入口,如果你不知道从何读起,建议从这篇《目录》开始,链接如下:
本文部分参考书籍《Python for network engineers》,纯英文,推荐移步阅读,链接如下:
一、print
几乎每个人刚接触Python时,都会Hello World
一下,而把这句话呈现在我们面前的,就是print
函数了。help
本身也是一个内置函数,我们现在来help一下。
>>> help(print)
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
>>>
这里我们看到了好几个关键字参数,如file
、sep
、end
等。这些参数可以让我们对print
行为进行控制。
>>> print('Hello World!')
Hello World!
print
函数接收的待打印元素可用逗号隔开,它们通通都会被转成字符串形式。
>>> print(1,2,range(0,10))
1 2 range(0, 10)
>>>
>>> def f(a):
... return a
...
>>>
>>> print(1,2,f,range(10))
1 2 <function f at 0x00000160C4F70790> range(0, 10)
>>>
如何理解会被转换成字符串呢?我们可以借助str
函数。
>>> str(1)
'1'
>>>
>>> str(f)
'<function f at 0x00000160C4F70790>'
>>>
>>> str(range(10))
'range(0, 10)'
>>>
1.1 sep
在传入多个待打印元素时,sep
参数是控制元素如何间隔的,默认是空格符。
>>> print(1, 2, 3)
1 2 3
>>>
我们也可以按需修改。
- |
>>> print(1, 2, 3, sep='|')
1|2|3
>>>
- \n
>>> print(1, 2, 3, sep='\n')
1
2
3
>>>
- \n{‘-’ * 10}\n
>>> print(1, 2, 3, sep=f"\n{'-' * 10}\n")
1
----------
2
----------
3
>>>
值得留意,我们控制print
函数行为的所有参数都必须使用关键字参数形式,而能使用位置参数形式。这个应该很好理解,因为带打印元素的个数是不确定的,比如遇到这种拆包形式*items
。
>>> items = [1, 2, 3, 4, 5]
>>> print(*items, sep=', ')
1, 2, 3, 4, 5
>>>
1.2 end
参数sep
控制待打印元素间隔的内容,参数end
则用于控制所有元素都打印好后,再打印什么内容,其默认情况是一个回车换行。
>>> print(1, 2, 3)
1 2 3
>>>
我们可以调整一下:
>>> print(1, 2, 3, end='\n' + '-' * 10 + '\n')
1 2 3
----------
>>>
1.3 file
参数file
可以控制待打印元素具体要打印到哪里去,默认情况是系统标准输出,即sys.stdout
,如上述内容。 如果参数file
配合文件操作(如open
方法,指定某个文件),可联动write
方法,把待打印元素的内容写入到对应的文件中去。
>>> f = open(r'E:\result.txt', 'w')
>>> for num in range(10):
... print('Item {}'.format(num), file=f)
...
>>> f.close()
两点提醒:
r'E:\result.txt'
中的r
可解决\
需转义问题,不然可写成E:\\result.txt
。- 文本路径,可用绝对路径和相对路径,如无特殊,较推荐使用绝对路径。
我们打开文件看看。
1.4 flush
默认情况下,print
函数写入文件或标准流。
我们来一个 10 秒计数例子,每 1 秒会输出 1 个计数。
特别说明一下,本例需要从 CMD 进入 IDLE 的对话模式,而非界面打开 IDLE。
C:\Users\zhuji>python
Python 3.10.6 (tags/v3.10.6:9c7b4bd, Aug 1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>>
>>> for num in range(10):
... print(num)
... time.sleep(1)
...
0
1
2
3
4
5
6
7
8
9
>>>
现在我们配合一下参数end
,让计数输出在同行显示。
>>> import time
>>>
>>> for num in range(10):
... print(num, end=' ') # 其实就是默认的 flush=False
... time.sleep(1)
...
0 1 2 3 4 5 6 7 8 9 >>>
此时,这些数字不会1秒钟出现1次,而是等到10秒以后,全部打印出来。
那么,同行显示情况下怎么让输出可以1秒出1个呢?此时参数flush
就可以排上用场了。
在Python中,print
函数的flush
参数用于控制输出缓冲区的刷新。
- 当
flush
参数为True
时,会强制刷新缓冲区并立即将输出内容显示在屏幕上 - 当
flush
参数为False
(默认值)时,输出内容会被缓冲,只有在缓冲区已满或程序结束时才会被刷新并显示出来
>>> import time
>>>
>>> for num in range(10):
... print(num, end=' ', flush=True) # 默认情况下,flush=False
... time.sleep(1)
...
0 1 2 3 4 5 6 7 8 9 >>>
静态文字展现不出来效果,你只要打开IDLE(记住从CMD进入),试敲一下,你就能马上看出差别了。
不过,这个功能对于网络工程师来说,可能不怎么实用(反正我没用过),大家先当了解即可。
二、range
2.1 range 概述
函数range
会产生一个不可变的数字序列,即range
对象。我们同样可以help
一下。
>>> help(range)
Help on class range in module builtins:
class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object
|
| Return an object that produces a sequence of integers from start (inclusive)
| to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.
| start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.
| These are exactly the valid indices for a list of 4 elements.
| When step is given, it specifies the increment (or decrement).
|
| Methods defined here:
| ...
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| start
|
| step
|
| stop
3个参数:
- start - 序列开始数值,默认为0。
- stop - 序列终结数值,该数字不被包括在序列中,比如(0,10),0包括,10不包括。
- step - 每次步进数值,默认为1。
函数range
存储这几个参数,在必要的时候才计算出序列数值。 这意味不管range
到底要表达多大的数值,其所占大小空间是固定的。
2.2 range 常规例子
我们先来一个最简单的例子,只有一个参数stop
。
>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
>>>
注意,此时数值5
是没有进入最终的序列的。这个我们在数学上有个术语,叫“左闭右开”。
接着,我们加多1个参数start
,即start
与stop
配合。
>>> list(range(1, 5))
[1, 2, 3, 4]
>>>
接着,我们再加多1个参数step
,即start
、stop
、step
组合配合。
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>>
2.3 range 进阶例子
逆向步进,step
设为负数。
>>> list(range(10, 0, -1))
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>>
stop
设为负数。
>>> list(range(5, -1, -1))
[5, 4, 3, 2, 1, 0]
>>>
我们看到,要获得降序序列,可以让stop
值小于start
值,并把step
设为负值。
负数的step
,步进同样可以是其它数值。
>>> list(range(10, 0, -2))
[10, 8, 6, 4, 2]
>>>
参数start
同样可以负数。
>>> list(range(-10, 0, 1))
[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>>
2.4 range 对象
上面函数range
作用后会产生一个range
对象。虽然它们都叫range
,但实际是两个概念。下面我们顺带着介绍一下range
对象。
Python针对序列的操作符,除了加法和乘法外,其它普遍可以应用在range
对象上。
- 成员检查
>>> nums = range(5)
>>> nums
range(0, 5)
>>> 3 in nums
True
>>> 7 in nums
False
>>>
- 元素索引
>>> nums = range(5)
>>> nums[0]
0
>>> nums[-1]
4
>>>
- 切片操作
>>> nums = range(5)
>>> nums[1:]
range(1, 5)
>>> nums[:3]
range(0, 3)
>>>
- 长度获取
>>> nums = range(5)
>>> len(nums)
5
>>>
- 获取最大最小元素
>>> nums = range(5)
>>> min(nums)
0
>>> max(nums)
4
index
方法
此外,range
对象支持index
方法。
>>> nums = range(1, 7)
>>> nums.index(3)
2
以上就是“网络工程师 Python 基础语法-常用函数(第1节,print、range)”的全部内容,希望对你有所帮助。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。