iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python3.9之你应该知道的新特性详解
  • 432
分享到

python3.9之你应该知道的新特性详解

2024-04-02 19:04:59 432人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一、数字类型二、字符串三、列表类型四、for循环一、数字类型 python除了支持原有的int和float类型,新增了支持Decimal或者Fraction。Python还内置支

一、数字类型

python除了支持原有的int和float类型,新增了支持Decimal或者Fraction。Python还内置支持复数,后缀j或者J用于标识虚数。

二、字符串

如果字符串中有单引号而没有双引号,该字符串外将加注双引号,反之,则加注单引号。print() 函数输出的内容更简洁易读,它会省略两边的引号,并输出转义后的特殊字符。


>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
>>> print('"Isn\'t," they said.')
"Isn't," they said.
>>> s = 'First line.\nSecond line.'  # \n means newline
>>> s  # without print(), \n is included in the output
'First line.\nSecond line.'
>>> print(s)  # with print(), \n produces a new line
First line.
Second line.

如果不希望前置的\字符转译成特殊字符,可以使用原始字符串,在引号前添加r即可。


>>> print('C:\some\name')  # h这里的\n会被认为是转义字符
C:\some
ame
>>> print(r'C:\some\name')  #在转义之前标记为r
C:\some\name

字符串可以使用+合并到一起,也可以使用*表示复制多次


>>>3 * 'mmm'  + ‘qqq'
>'mmmmmmmmMQqq'

相邻的两个或者多个字符串会自动合并


>>>'Py' 'thon'
>‘Python'

拆分长字符串时,这个功能特别实用:


>>>('Put several strings within parentheses '
...         'to have them joined together.')
>>>text
>'Put several strings within parentheses to have them joined together.'

这个功能只能用于两个字面值,不能用于变量或者表达式:


>>> prefix = 'Py'
>>> prefix 'thon'  # can't concatenate a variable and a string literal
  File "<stdin>", line 1
    prefix 'thon'
                ^
SyntaxError: invalid syntax
>>> ('un' * 3) 'ium'
  File "<stdin>", line 1
    ('un' * 3) 'ium'
                   ^
SyntaxError: invalid syntax

合并多个变量或者合并变量与字面值,要使用“+”:


>>> prefix + 'thon'
'Python'

字符串支持索引,正向索引和反向索引都支持。


str[0]  str[1]  str[-1]
#为什么反向索引从-1开始?
#-0 和 0 相等,指向的是同一个值。

python支持切片操作。索引可以提取单个字符,切片操作可以提取字符串。


>>> Word[0] 
'P'
>>> word[2:5] 
'tho'

python切片操作输出结果包含切片开始,但是不包含切片结束。因此s[:i] + s[i:]总是等于s


>>> word[:2] + word[2:]
'Python'
>>> word[:4] + word[4:]
'Python'

python可以自动处理越界索引:


>>> word[4:42]
'on'
>>> word[42:]
''

python字符串是不可变量,所以直接对某个索引复制会报错。如果想改变字符串的值,必须新建一个字符串。

三、列表类型

python列表是个很神奇的类型,列表中添加的元素可以是不同的数据类型。与python字符串一样,python列表也支持索引和切片操作。

切片操作会返回包含请求元素的新列表。返回的是列表的浅拷贝。


#补充:深拷贝和浅拷贝的区别:
#使用浅拷贝,当原容器对象中可变对象中有元素发生变化,拷贝得到的对象也会变#化。而使用深拷贝时,不会有这种问题。
#!/usr/bin/python
# -*- coding:utf-8 -*-
# @Author : qmt
# @Time : 2021/4/27 21:26
import copy
# 浅拷贝
list1 = [[1,1], 555 , 'mm']
list2 = list1.copy()
list3 = copy.copy(list1)
print(id(list1))
print(id(list2))
print(id(list3))
# 输出结果
# 2207574630976
# 2207574779456
# 2207574778816

print(id(list1[0]))
print(id(list2[0]))
# 输出结果:
# 2287435172736
# 2287435172736

print(id(list1[1]))
print(id(list2[1]))
# 输出结果:
# 2085715335536
# 2085715335536

print(id(list1[2]))
print(id(list2[2]))
print(id(list3[2]))
# 输出结果:
# 3009054756720
# 3009054756720
# 3009054756720

# 改变第一个值,查看复制对象的变化
list1[0][0] = 100
print(list1)
print(list2)
print(list3)
# 输出结果:
# [[100, 1], 555, 'mm']
# [[100, 1], 555, 'mm']
# [[100, 1], 555, 'mm']


list1[2] = 32
print(list1)
print(list2)
print(list3)
# 输出结果:
# [[100, 1], 555, 32]
# [[100, 1], 555, 'mm']
# [[100, 1], 555, 'mm']
# 字符串是不可变对象,所以浅拷贝不会同步到其他复制对象中


list1[1] = 'mm'
print(list1)
print(list2)
print(list3)
# 输出结果:
# [[100, 1], 'mm', 32]
# [[100, 1], 555, 'mm']
# [[100, 1], 555, 'mm']

深拷贝:


#!/usr/bin/python
# -*- coding:utf-8 -*-
# @Author : qmt
# @Time : 2021/4/27 21:35
import copy
list1 = [[1,2],'mm',2222]
list2 = copy.deepcopy(list1)

print(id(list1))
print(id(list2))
# 输出结果:指向不同的内存地址
# 2847485493888
# 2847485646528

list1[0][0] = 100
print(id(list1))
print(id(list2))
# 输出结果:list2作为一个深拷贝对象,内存地址并没有发生变化
# 1368800613056
# 1368800441920

list1[2] = 100
print(list1)
print(list2)
# 输出结果:list1的任何操作都不会对list2产生影响,因为这相当于创建了一个新的对象
[[100, 2], 'mm', 100]
[[1, 2], 'mm', 2222]

总结

可变类型 Vs 不可变类型
可变类型(mutable):列表,字典
不可变类型(unmutable):数字,字符串,元组

深拷贝会把可变对象也拷贝一份,而浅拷贝不会。

上面例子中说的是列表(可变对象)的拷贝,那对于元组,字符等不可不对象呢?

答案是,对不可变对象,其实不存在深浅拷贝的问题。无论怎么拷贝,效果都是新建立一个指向不可变对象的指针而已。


import copy
a = (1,2)
b = copy.copy(a)
c =copy.deepcopy(a)
print(b == c)
print(id(b)==id(c))

lista = [5,6]
listb = copy.copy(lista)
listc = copy.copy(lista)
print(listb == listc)
print(id(lista) == id(listb))

输出结果:

True
True
True
False


Python中的对象包含三个基本要素,分别是:
id:用来唯一标识一个对象,可以理解为内存地址;
type:标识对象的类型;
value:对象的值;
== :比较两个对象的内容是否相等,即两个对象的 value 是否相等,无论 id 是否相等,默认会调用对象的 __eq__()方法
is: 比较的是两个对象是不是完全相同,即他们的 id 要相等。
也就是说如果  a is b  为 True,那么 a == b 也为True

四、for循环


for n in range(2,10):
    for x in range(2,n):
        if n % x == 0:
            print(n ,'equals',x ,'*', n//x)
            break
    else:
        print(n,'is a prime number')

输出结果:

2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

到此这篇关于python3.9之你应该知道的新特性详解的文章就介绍到这了,更多相关python3.9新特性内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python3.9之你应该知道的新特性详解

本文链接: http://www.lsjlt.com/news/124945.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python3.9之你应该知道的新特性详解
    目录一、数字类型二、字符串三、列表类型四、for循环一、数字类型 python除了支持原有的int和float类型,新增了支持Decimal或者Fraction。python还内置支...
    99+
    2024-04-02
  • Python 3.10发布!你应该知道这5大新特性
    Python 在市场上已经有一段时间了,作为一名 Python 开发人员,我很高兴地分享 Python 正在逐步获得更新和每个新版本的改进。Python 的最新版本 3.10 有一些重大改进,我将在此处列出这些更新。我在列举了这个新版本 的...
    99+
    2023-05-14
    Python 新版本 特性
  • MySQL8.0中你必须要知道的索引新特性
    目录前言支持索引降序排序降序索引说明降序索引好处支持索引的隐藏隐藏索引的说明隐藏索引的好处总结前言 mysql中的索引可以为提高我们的查询效率,相比较于低版本, MySQL 8.0中针对索引做了不少的优化,本文主要分享下...
    99+
    2024-04-02
  • 你应该使用Python3里的这些新特性
    概述 由于Python2的官方维护期即将结束,越来越多的Python项目从Python2切换到了Python3。可是,在实际的工作中,我发现好多人都是在用Python2的思维去写Python3的代码,Python3给我们提供了很多新的、很...
    99+
    2023-01-31
    你应该 新特性
  • 你可能不知道的package.json属性详解
    目录概述nameversiondescriptionkeywordshomepagebugslicense和用户相关的属性: author, contributorsfilesmai...
    99+
    2024-04-02
  • 你应该知道的 10 个 React Native 组件库
    编者注:本文最后更新于 2022 年 12 月 15 日,以包含更新、更受欢迎的库。 在构建 React Native 应用程序时,最佳实践涉及利用独立的 UI 组件来加快开发时间。这个想法并不是 React Nat...
    99+
    2023-09-15
    react native javascript react.js Powered by 金山文档
  • Java8新特性之Stream API详解
    目录一、前言二、使用流程三、案例演示一、前言 StreamAPI在Java8版本中使用,关注的是对数据的筛选、查找、存储等 它可以做的事情有:过滤、排序、映射、归约 二、使用流程 S...
    99+
    2024-04-02
  • 你可能不知道的JavaScript之this指向详解
    目录前言默认绑定,全局对象点石成金,隐式绑定隐式绑定丢失指腹为婚,显式绑定内有乾坤,new 绑定军令如山,箭头函数this 绑定优先级总结相关文献引用链接前言 JavaScript ...
    99+
    2024-04-02
  • JavascriptES6新特性之map和reduce详解
    目录说明1.map()代码示例:2.reduce()代码示例:综合案例总结说明 ES6中,数组新增了map和reduce方法。 1.map() map() :接收一个函数,将原数组中...
    99+
    2024-04-02
  • Java8新特性之Collectors.joining()实例详解
    目录方法定义无参方法单个参数多个参数如果流中的数据是字符串如果流中的数据是对象总结方法定义 Java 8 流 ( stream ) 收集器 ( Collectors ) 中的&nbs...
    99+
    2023-01-12
    java8新特性collectors.joining() java8 collectors.joining()
  • 7个你应该知道的JS原生错误类型
    目录概述1. RangeError2. ReferenceError3. SyntaxError4. TypeError5. URIError6. EvalError7. Inter...
    99+
    2024-04-02
  • JDK8的新特性详解
    本篇内容介绍了“JDK8的新特性详解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、Lambda演变过程@Data@ToString@No...
    99+
    2023-06-02
  • JDK12的新特性详解
    本篇内容介绍了“JDK12的新特性详解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、JDK12之Shenandoah低暂停时间垃圾收集器...
    99+
    2023-06-02
  • Java8新特性之默认方法详解
    目录简介正文什么是默认方法为啥要提供默认方法呢?如果不提供呢?主要针对谁?实现了默认方法的接口和抽象类有区别吗是不是可以说Java现在也实现了多重继承?总结简介 在Java之前,我们...
    99+
    2024-04-02
  • 5个你应该知道的JavaScript技巧分别是哪些
    这篇文章将为大家详细讲解有关5个你应该知道的JavaScript技巧分别是哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript是目前最流行...
    99+
    2024-04-02
  • GO语言和Laravel缓存:你应该知道的关键字
    缓存是现代应用程序的核心组件之一,可以大大提高应用程序的性能和响应速度。GO语言和Laravel都提供了强大的缓存功能,本文将介绍一些关键字和代码示例,以便您更好地了解GO语言和Laravel缓存。 GO语言缓存关键字 GO语言提供了内置...
    99+
    2023-11-12
    关键字 缓存 laravel
  • Python3.10新特性之match语句示例详解
    目录正文通过字典间接实现 switch在case中使用元组正文 在Python 3.10发布之前,Python是没有类似于其他语言中switch语句的,要实现类似的功能最简单的方法...
    99+
    2023-02-09
    Python3.10特性match语句 Python match
  • Laravel 框架与 Python 索引:你应该知道的面试问题。
    在互联网时代,软件开发领域的新技术层出不穷,各种开发语言与框架层出不穷。为了在这个竞争激烈的行业中脱颖而出,软件开发者必须保持学习和更新自己的技能。在软件工程师的面试中,常常会涉及到 Laravel 框架和 Python 索引的问题。本篇...
    99+
    2023-10-31
    索引 面试 laravel
  • ASP 和 Laravel 中的数组函数 - 你应该知道的一切吗?
    ASP 和 Laravel 是两个流行的 Web 开发框架,它们都提供了丰富的数组函数来帮助开发人员更高效地处理数据。本文将介绍 ASP 和 Laravel 中的一些常用数组函数,让你更好地掌握它们的用法和优势。 ASP 中的数组函数 Sp...
    99+
    2023-08-31
    laravel 数组 函数
  • ES9的新特性之正则表达式RegExp详解
    目录简介Numbered capture groupsNamed capture groupsRegExp中Unicode属性的转义lookaround assertiondotAl...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作