当前位置: 首页 > news >正文

Python学习笔记:快速上手:基础知识

快速上手:基础知识

数和表达式

  1. 除法
>>> 1 / 2 
0.5 
>>> 1 / 1 
1.0
  1. 整除
>>> 1 // 2 
0 
>>> 1 // 1 
1 
>>> 5.0 // 2.4 
2.0
  1. 求余(求模): x % y 等价于x - ((x // y) * y)。
>>> 10 // 3 
3 
>>> 10 3 %
1 
>>> 9 // 3 
3 
>>> 9 3 %
0 
>>> 2.75 0.5 %
0.25

对负数求余

# 整除运算 向下圆整floor()
>>> 10 // 3 
3 
>>> 10 // -3 
-4 
>>> -10 // 3 
-4 
>>> -10 // -3 
3
  1. 乘法运算
# 乘方运算符的优先级比求负(单目减)高
>>> -3 ** 2
-9 
>>> (-3) ** 2 
9

变量

在Python中,名称(标识符)只能由字母、数字和下划线(_)构成,且不能以数字打头。因此Plan9是合法的变量名,而9Plan不是。

PS:为什么不能以数字打头:

原因一 词法分析说 因为每次输入“头符号”后要判断该符号是数字还是字符,而禁止以数字开头只需要判断一次,很显然每一次都要判断是一种极大的浪费

原因二 现有的数据无法区分 “1e5”,“100L”,“10f”

字符串

在Python 3中,所有的字符串都是Unicode字符串

  1. str和repr
# str是一个类,repr是一个函数
>>> print("Hello,\nworld!") 
Hello, 
world!>>> print(repr("Hello,\nworld!")) 
'Hello,\nworld!' 
>>> print(str("Hello,\nworld!")) 
Hello, 
world!
  1. 长字符串 三引号’‘’
# 使用三个双引号。因此字符串本身可包含单引号和双引号,无需使用反斜杠进行转义
print('''This is a very long string. It continues here. 
And it's not over yet. "Hello, world!" 
Still here.''')
  1. 原始字符串 r’’
>>> print(r'C:\nowhere') 
C:\nowhere 
>>> print(r'C:\Program Files\fnord\foo\bar\baz\frozz\bozz') 
C:\Program Files\fnord\foo\bar\baz\frozz\bozz

不能以反斜杠结尾

>>> print(r"This is illegal\") 
SyntaxError: EOL while scanning string literal

指定以反斜杠结尾的原始字符串

>>> print(r'C:\Program Files\foo\bar' '\\') 
C:\Program Files\foo\bar\
  1. Unicode、bytes和bytearray

Python字符串使用Unicode编码来表示文本,大致而言,每个Unicode字符都用一个码点(code point)表示,而码点是Unicode标准给每个字符指定的数字。

诸如C等编程语言中,这些字节完全暴露,而字符串不过是字节序列而已。

为与C语言互操作以及将文本写入文件或通过网络套接字发送出去,Python提供了两种类似的类型:不可变的bytes和可变的bytearray。

Unicode码点是使用整数定义的,而ASCII字符是使用对应的数及其二进制编码定义的。这一点好像无关紧要,原因之一是整数0~255和8位二进制数之间的映射是固定的,几乎没有任何机动空间。问题是超过1字节后,情况就不那么简单了:直接将每个码点表示为相应的二进制数可能不再可行。

有一种Unicode编码标准是基于这种考虑的,它就是UTF-32,但如果你主要处理的是使用互联网上常见语言书写的文本,那么使用这种编码标准将很浪费空间。

不使用全部32位,而是使用变长编码,即对于不同的字符,使用不同数量的字节进行编码。

>>> "Hello, world!".encode("ASCII") 
b'Hello, world!' 
>>> "Hello, world!".encode("UTF-8") 
b'Hello, world!' 
>>> "Hello, world!".encode("UTF-32") 
b'\xff\xfe\x00\x00H\x00\x00\x00e\x00\x00\x00l\x00\x00\x00l\x00\x00\x00o\x00\x00\x00,\x00\ x00\x00 \x00\x00\x00w\x00\x00\x00o\x00\x00\x00r\x00\x00\x00l\x00\x00\x00d\x00\x00\x00!\x00\ x00\x00'

小结

http://www.lryc.cn/news/7744.html

相关文章:

  • excel学习笔记-导入外部文件,报错,数值格式变换,日期格式的转化,求和快捷键,冻结窗格
  • 06 OpenCV‘阈值处理、自适应处理与ostu方法
  • 月薪过万的那些人,大部分都是做什么工作的?
  • csgo搬砖项目,门槛最低的副业就是它(内附入门知识及选品技巧)
  • 【闲聊杂谈】高并发下基于LVS的负载均衡
  • Redis新数据类型
  • 使用Python绘制股票CCI指标曲线
  • 【C语言技能树】浮点数在内存中的存储
  • Spring框架源码(五) @configuration源码深度解析
  • gcc/g++从入门到精通(3)gcc头文件、库搜索路径方式全面盘点
  • Android Studio多渠道打包及自动化构建
  • 基于MATLAB的MIMO信道估计(附完整代码与分析)
  • Python代码游戏————星球大战
  • java向Word模板中替换书签数据,插入图片,插入复选框,插入Word中表格的行数据,删除表格行数据
  • Java基础知识快速盘点(二)
  • 企业降本增效的催化剂:敏捷迭代
  • MySQL入门篇-MySQL高级窗口函数简介
  • 什么是 API(应用程序接口)?
  • 如何在外网访问内网的 Nginx 服务?
  • vue2中defineProperty和vue3中proxy区别
  • 将bean注入Spring容器的五种方式
  • C生万物 | 常量指针和指针常量的感性理解
  • python 打包工具 pyinstaller和Nuitka区别
  • Python解题 - CSDN周赛第28期
  • DNS记录类型有哪些,分别代表什么含义?
  • ICLR 2022—你不应该错过的 10 篇论文(上)
  • HydroD 实用教程(三)环境数据
  • 第四章 统计机器学习
  • Redis第一讲
  • Java面试题-消息队列