最新啥样的python语法值得收藏?_python象牙符号,2024年最新腾讯hr面试题目

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

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

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

array([[145, 170, 195],
[255, 300, 345],
[365, 430, 495]])


矩阵乘法运算符的魔术方法为\_\_matmul\_\_()、rmatmul()、imatmul()三个;


本身用处不大,但是提供了一个额外的操作符使用空间,可以用来重载来进行类似距离计算之类的用途。



python学习交流裙:906715085##3

from math import sqrt

class Point:
def __init__(self, x, y):
self.x = x
self.y = y

def \_\_matmul\_\_(self, value):
    x_sub = self.x - value.x
    y_sub = self.y - value.y
    return sqrt(x_sub\*\*2 + y_sub\*\*2)

a = Point(1, 3)
b = Point(4, 7)
print(a @ b)
5


争议主要存在于:作为矩阵乘法来说@操作符没有直观联系、影响可读性,不如直接使用matmul


**PEP 3107/484/526 函数注解/类型提示/变量注解**


Python3.0引入函数注解、3.5引入typing,让python也能享受静态类型的福利。可以说是py3中个人最喜欢的feature,使用简单、效果强大,直接让开发效率以及代码可维护性直线增长。



参数后加:即可标注类型,函数结构定义后接->即可标注返回类型

def get_hello(name: str) -> str:
return f"Hello, {name}!"


如上进行标记之后IDE便能自动读取参数、返回类型,直接出联想爽快如java。


而PEP 484 Typing则是极大的扩充了类型定义语法,支持别名、泛型、Callable、Union等等。非常推荐直接阅读PEP。


**下面就是一个泛型的例子**



from typing import TypeVar, Iterable, Tuple

T = TypeVar(‘T’, int, float, complex)
Vector = Iterable[Tuple[T, T]]

def inproduct(v: Vector[T]) -> T:
return sum(x*y for x, y in v)

def dilate(v: Vector[T], scale: T) -> Vector[T]:
return ((x * scale, y * scale) for x, y in v)

vec = [] # type: Vector[float]


随后在3.6引入了众望所归的变量注解(PEP 526),


使用也很简单,直接在变量后添加冒号和类型即可,


搭配函数注解一起食用体验极佳



pi: float = 3.142

也同样支持Union等

from typing import Union

a: Union[float,None] =1.0


3.7中又引入了延迟标记求值(PEP 563),


让typing支持了前向引用、并减轻了标注对程序启动时间的影响,如虎添翼。



3.7前合法

class Tree:
def __init__(self, left: ‘Tree’, right: ‘Tree’):
self.left = left
self.right = right

3.7前不合法、3.7后合法

class Tree:
def __init__(self, left: Tree, right: Tree):
self.left = left
self.right = right


静态类型检查对Python所带来的副作用主要还是启动时间上的影响,当然大部分场景所带来的便利是远大于这一副作用的。


**PEP 498 f-string**


Python3.6引入,应该是用的最多的feature之一了,但是看到很多代码里面还是str.format,就不得不再提一下。



a = 10
#只需要简单的在任意字符串字面量前加个f,就可以用花括号直接引用变量
print(f"a = {a}")
a = 10

格式化也很方便,使用:即可

pi = 3.14159
print(f"pi = {pi: .2f}")
pi = 3.14


也可以在表达式后接!s或者!r来选择用str()还是repr()方法转换为字符串。


**基本就是str.format的语法糖。**


在3.8版本以后,又增加了直接套表达式的功能,输出信息非常方便。



theta = 30
print(f’{theta=} {cos(radians(theta))=:.3f}')
theta=30 cos(radians(theta))=0.866


**PEP 515 数值字面值下划线**


Python3.6引入。输入太长的数字字面值怎么办?



a = 123_456_789
b = 123456789
a == b
True


比较鸡肋…


**Python 3.7**


**PEP 557 数据类Data Classes**


提供了一个方便的dataclass类装饰器,直接上代码举例:



from dataclasses import dataclass

@dataclass
class InventoryItem:
name: str
unit_price: float
quantity_on_hand: int = 0

def total\_cost(self) -> float:
    return self.unit_price \* self.quantity_on_hand

对这个例子,这个类会自动生成以下魔术方法



def __init__(self, name: str, unit_price: float, quantity_on_hand: int = 0) -> None:
self.name = name
self.unit_price = unit_price
self.quantity_on_hand = quantity_on_hand
def __repr__(self):
return f’InventoryItem(name={self.name!r}, unit_price={self.unit_price!r}, quantity_on_hand={self.quantity_on_hand!r})’
def __eq__(self, other):
if other.class is self.class:
return (self.name, self.unit_price, self.quantity_on_hand) == (other.name, other.unit_price, other.quantity_on_hand)
return NotImplemented
def __ne__(self, other):
if other.class is self.class:
return (self.name, self.unit_price, self.quantity_on_hand) != (other.name, other.unit_price, other.quantity_on_hand)
return NotImplemented
def __lt__(self, other):
if other.class is self.class:
return (self.name, self.unit_price, self.quantity_on_hand) < (other.name, other.unit_price, other.quantity_on_hand)
return NotImplemented
def __le__(self, other):
if other.class is self.class:
return (self.name, self.unit_price, self.quantity_on_hand) <= (other.name, other.unit_price, other.quantity_on_hand)
return NotImplemented
def __gt__(self, other):
if other.class is self.class:
return (self.name, self.unit_price, self.quantity_on_hand) > (other.name, other.unit_price, other.quantity_on_hand)
return NotImplemented
def __ge__(self, other):
if other.class is self.class:
return (self.name, self.unit_price, self.quantity_on_hand) >= (other.name, other.unit_price, other.quantity_on_hand)
return NotImplemented


这一条PEP也是比较有争议的,主要原因是Python其实已经内置了不少的类似模型:collection.namedtuple、typing.NamedTuple、attrs等 ;


但是这条PEP的提出还是为了保证方便地创建资料类的同时,保证静态类型检查,而已有的方案都不方便直接使用检查器。


**Python 3.8**


**PEP 572 海象牙运算符**  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/cfc940c8bfd94c1d8da3f972323f87a1.png)


"逼走"了Guido van Rossum,最有争议的PEP之一。


首先引入了海象牙运算符:=,代表行内赋值。



Before

while True:
command = input("> ");
if command == “quit”:
break
print(“You entered:”, command)

After

while (command := input("> ")) != “quit”:
print(“You entered:”, command)


assignment expressions在进行分支判断时非常好用,


写的时候能够舒服很多。


本身使用也集中在if/while这种场景,虽然让语法变复杂了,


但是总体还是可控的,舒适程度大于风险。


海象运算符本身问题不大,但是争议主要存在于PEP 572的第二点,对于生成器语义的变化。


在PEP 572后,生成器的in后的运算顺序产生了变化,原本是作为生成器输入,结果现在变成了生成器闭包的一部分。



temp_list = [“abc”,“bcd”]
result_list = (x for x in range(len(temp_list)))
print(list(result_list))

等价于

Before

temp_list = [“abc”, “bcd”]

def func_data(data: int):
for x in range(data):
yield x

result_list = func_data(len(temp_list))
print(list(result_list))

After

temp_list = [“abc”, “bcd”]

def func_data():
for x in range(len(temp_list)):
yield x

result_list = func_data()
print(list(result_list))


这样的修改目的是配合海象牙运算符增加代码可读性,


但无疑是带破坏性的修改,且让运行顺序变得迷惑,让一些老代码出现难以发现的bug。


**python社区在激烈辩论后,这一部分的修改被成功撤销,只保留了海象牙运算符。**


关于这个PEP,知乎上有难得一见的有价值讨论,这部分范例代码也引用自此。


**PEP 570 仅限位置形参**


在函数形参处新增一个/语法,划分非关键字与关键字形参。例如



def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)

以下调用均合法

f(10, 20, 30, d=40, e=50, f=60)

以下调用均不合法

f(10, b=20, c=30, d=40, e=50, f=60) # b cannot be a keyword argument
f(10, 20, 30, 40, 50, f=60) # e must be a keyword argument


/语法的添加让调用函数时可以在可读性与简洁之间自由选择,


可以选择强制不接受关键字参数、


不需要形参名称时也可以省略。


同时也让接受任意参数函数的实现变得方便了许多,例如:



class Counter(dict):
def __init__(self, iterable=None, /, **kwds):
# Note “iterable” is a possible keyword argument


这条本来也有其他方案,例如装饰器实现、def fn(.arg1, .arg2, arg3):、def fn(a, (b, c), d):等,这里就不一一展开了,推荐阅读PEP原文。


**Python 3.9**


**PEP 584 字典合并运算符**


在此之前,要想合并两个字典的画风是这样的



a={‘a’:1,‘b’:2}
b={‘c’:3}

a.update(b)

或者是

c = {**a, **b}


但自从有了|之后,可以变成这样



a |= b
c = a | b


当然这个操作符也伴随着一些争议,大概是这样:


反方:合并不符合交换律 正方:python字典合并本身就不符合交换律,特别是python3.6之后统一到有序字典后,相比合并应该更类似于拼接


学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!



### 一、Python所有方向的学习路线



Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。



![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)



### 二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。



![](https://img-blog.csdnimg.cn/img_convert/8c4513c1a906b72cbf93031e6781512b.png)



### 三、全套PDF电子书



书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

![](https://img-blog.csdnimg.cn/img_convert/46506ae54be168b93cf63939786134ca.png)



### 四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。



![](https://img-blog.csdnimg.cn/afc935d834c5452090670f48eda180e0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP5aqb56eD56eD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)



### 五、实战案例



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



![](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)



### 六、面试资料

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



![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)  

![](https://img-blog.csdnimg.cn/img_convert/d2d978bb523c810abca3abe69e09bc1a.png)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值