网络工程师 Python 基础语法-常用函数(第1节,print、range)

大家好,我又来了!经过前面一些篇幅介绍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.

>>> 

这里我们看到了好几个关键字参数,如filesepend等。这些参数可以让我们对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,即startstop配合。

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

接着,我们再加多1个参数step,即startstopstep组合配合。

>>> 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必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值