str_val = 'apples'
num_val = 42
print(f'{num\_val} {str\_val}') # 42 apples
❀变量名
除了获取变量的值之外,您还可以在值旁边获取它的名称。这在调试时特别有用,并且可以通过=
在大括号内的变量名称后添加等号 ( )
来轻松实现。
请记住,花括号内的空格已被考虑在内,因此在等号周围添加空格可以使结果更具可读性。
str_val = 'apples'
num_val = 42
print(f'{str\_val=}, {num\_val = }') # str\_val='apples', num\_val = 42
❀数学运算
在语法上与变量名称不同,您还可以在 f 字符串中执行数学运算。您可以将数学表达式放在花括号内,如果添加等号,您将获得表达式及其结果。
num_val = 42
print(f'{num\_val % 2 = }') # num\_val % 2 = 0
❀可打印的表示
除了纯字符串插值外,您可能还想获得一个值的可打印表示。这已经很容易使用该repr()
功能完成了。f
字符串通过!r
在大括号内附加 a来提供更短的语法。
str_val = 'apples'
print(f'{str\_val!r}') # 'apples'
❀数字格式
此外,f 字符串也可用于格式化 - 因此名称中的f。要为值添加格式,您可以添加一个冒号 ( :)
,后跟一个格式说明符。这也可以与之前的 equals
结合使用,您是否也想打印变量的名称。
数字是一个很好的候选者。例如,如果要将数值修剪为小数点后两位,则可以使用.2f
格式说明符。
price_val = 6.12658
print(f'{price\_val:.2f}') # 6.13
❀日期格式
最后,日期也可以使用格式说明符以与数字相同的方式进行格式化。像往常一样,%Y
表示全年,%m
是月份,是月份%d
中的日期。
from datetime import datetime;
date_val = datetime.utcnow()
print(f'{date\_val=:%Y-%m-%d}') # date\_val=2021-07-09
四、在 Python 中格式化字符串的 2 种方法
ʕ ᵔᴥᵔ ʔ 字符串
格式化字符串文字,通常称为 f
字符串,是以'f'
或为前缀的字符串'F'
。这些字符串可以包含用大括号 ( {})
括起来的替换字段。
name = 'John'
age = 32
print(f'{name} is {age} years old') # 'John is 32 years old'
ʕ ᵔᴥᵔ ʔ str.format()
该str.format()
方法的工作方式与 f-strings
非常相似,主要区别在于替换字段作为参数提供,而不是作为字符串的一部分提供。
name = 'John'
age = 32
print('{0} is {1} years old'.format(name, age)) # 'John is 32 years old'
五、理解 Python 的切片赋值
5.1理解 Python 的切片符号
ʕ•̫͡• ʔ 基本语法
Python 的切片符号用于返回列表或列表的一部分。基本语法如下:
[start_at:stop_before:step]
其中start_at
是要返回的第一个项目的索引(包括),stop_before
是停止之前的元素的索引(不包括),step
是任何两个项目之间的步幅。
所有三个参数都是可选的,这意味着您可以省略其中任何一个。例如:
nums = [1, 2, 3, 4, 5]
nums[1:4] # [2, 3, 4] (start at 0, stop before 4)
nums[2:] # [3, 4, 5] (start at 0, stop at end of list)
nums[:3] # [1, 2, 3] (start at 0, stop before 3)
nums[1:4:2] # [2, 4] (start at 1, stop before 4, every 2nd element)
nums[2::2] # [3, 5] (start at 2, stop at end of list, every 2nd element)
nums[:3:2] # [1, 3] (start at 0, stop before 3, every 2nd element)
nums[::2] # [1, 3, 5] (start at 0, stop at end of list, every 2nd element)
nums[::] # [1, 2, 3, 4, 5] (start at 0, stop at end of list)
从上面的示例中您可能可以看出,默认值为start_at = 0
、stop_before = len(nums)
、step = 1
。
浅克隆列表的惯用方法是使用[:]
(例如nums_clone = nums[:]
)。
ʕ•̫͡• ʔ 负值
所有三个参数也接受负值。对于start_at
and stop_before
,负值意味着从列表的末尾开始计数,而不是从开始计数。例如-1
将代表最后一个元素,-2
倒数第二个元素等。例如:
nums = [1, 2, 3, 4, 5]
nums[1:-2] # [2, 3] (start at 1, stop before 2nd to last)
nums[-3:-1] # [3, 4] (start at 3rd to last, stop before last)
负数step
意味着列表被反向切片(从结尾到开头)。这也意味着start_at
应该大于stop_before
并且stop_before
在反向步幅的上下文中更像是stop_after
如果您正在查看非反向列表。例如:
nums = [1, 2, 3, 4, 5]
nums[::-1] # [5, 4, 3, 2, 1] (reversed)
nums[4:1:-1] # [5, 4, 3] (reversed, start at 4, stop after 1)
nums[-1:1:-2] # [5, 3] (reversed, start at last, stop after 1, every 2nd)
ʕ•̫͡• ʔ 空切片
请记住,切片表示法非常宽容,因此如果参数的值超出列表的范围,您将得到一个空列表。例如:
nums = [1, 2, 3, 4, 5]
nums[6:8] # []
nums[:-10] # []
5.2理解 Python 的切片赋值
ಡ ಡ基本语法
为了理解 Python 的切片分配,您至少应该对切片的工作原理有一个很好的了解。这是一个快速回顾:
[start_at:stop_before:step]
切片赋值与切片列表的语法相同,唯一的例外是它用在表达式的左侧而不是右侧。由于切片返回一个列表,切片赋值需要一个列表(或其他可迭代的)。而且,顾名思义,右侧应该是分配给表达式左侧切片的值。例如:
nums = [1, 2, 3, 4, 5]
nums[:1] = [6] # [6, 2, 3, 4, 5] (replace elements 0 through 1)
nums[1:3] = [7, 8] # [6, 7, 8, 4, 5] (replace elements 1 through 3)
nums[-2:] = [9, 0] # [6, 7, 8, 9, 0] (replace the last 2 elements)
ಡ ಡ改变长度
表达式左侧切片返回的列表部分是将通过切片赋值更改的列表部分。这意味着您可以使用切片分配将列表的一部分替换为长度也与返回切片不同的不同列表。例如:
如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!