目录
3-1 整数(整数)
3-2 长整数
3-3 浮点数
3-4 虚数(复数)
3-5 伦理数
3-6 空值
3-7 字符串(str)
3-8 原始字符串
3-9 格式字符串
3-10 字节串
3-11 Unicode字符串
3-12 多行字符串
3-13 字符串连接
3-14 转义序列 (\x)
3-15 字符串格式 (%)
3-1 整数(整数)
num = 1234 # 正整数(十进制)
0o ( 0O )、0x ( 0X )、0b ( 0B ) 分别表示八进制、十六进制和二进制。
num = 0b01000101 # 二进制(以 0b/0B 开头的数字是二进制)
num = 0o666 # 八进制(以 0o/0O 开头的数字是八进制)
num = 0xffff # 十六进制(以 0x/0X 开头的数字是十六进制数)
3-2 长整数
长整数( long ) 处理位数多于整数 (int) 的整数。Python 2在最后加了l或者L ,但是l很容易被误认为是1,所以还是用L比较好。整数 (int) (sys.maxint) 的最大值因系统而异,可能是2 31 -1 或 2 63 -1
数字 = 1565833720569789208L
长整数只要内存允许就没有位数限制,长整数之间的运算不会出现计算错误。
num = 789564236587890123456789012345678901234568974562138L
在 Python 3 中,整数(int)和长整数(long)被统一并视为整数(int),L和l也被废除了。
num = 123L # Python3 中的错误(SyntaxError 异常)
从 Python 3.6 开始,可以使用下划线 (_) 代替千位分隔符。
num = 1 _ 245 _ 567 _ 879 # 与 1245567879 同义
3-3 浮点数(float)
浮点数( float ) 描述如下。e 2 表示 10 的平方。默认情况下,Python 执行双精度(53 位)算术。
num = 1.234 # 浮点数
num = 1.2e3 # 浮点数(指数)1.2×10 3
num = 1.2E-3 # 浮点数(指数)1.2×10 -3
3-4 虚数(复数)
虚数(复数)用j或J标记。
数 = 3.14j
3-5 伦理数
布尔值(bool)由True或False表示。用大写写第一个字母。
bool = True
bool = False
在Python中,False,数值0和0.0,空字符串(””),空列表([]),空元组(()),空字典({})等被认为是假的,其他一切算是真的。
3-6 空值
None是一个特殊值,表示没有值。相当于JavaScript 中的null 。
x = None
3-7 字符串(str)
字符串 ( str )括在双引号 ( “ ) 或单引号 ( ‘ ) 中。
str = "Hello world"
str = 'Hello world'
您可以在“…”中使用 ‘ 和在“…”中使用“。
str = "You can use ' in the double quotation string."
str = 'You can use " in the single quotation string.'
要在“…”中使用“”和在“…”中使用“,在“或者‘前加反斜杠
str = "You can use \" in the string."
str = 'You can use \' in the string.'
3-8 原始字符串
忽略转义序列,需要在前加上r或R
str = 'aaa\nbbb' # \n 被视为换行符
str = r'aaa\nbbb' # \n 被视为反斜杠字符 (\) 和小写字母 n
3-9 格式字符串
您可以通过在“…”或“…”前加上f或F来引用字符串中 {…} 中的 Python 表达式。自 Python 3.6 起可用
name = "yuhua"
age = 26
print(f"My name is {name}. I'm {age} years old.")
可以如下执行操作和函数调用。
import math
a = 5
b = 3
print(f"{a + b}") #=> 8
print(f"{math.pow(a, b)}") #=> 25.0
f”{a}{b}” 的行为类似于使用 “{a}{b}”.format(a=a, b=b) 进行格式化。以下示例使用 .format() 格式编写一个总位数为 6 位、有效位数为 3 位的格式化字符串。
v = 1.234567
w = 6
p = 3
print(f"{v:{w}.{p}}") #=> 1.23
print("{v:{w}.{p}}".format(v=v, w=w, p=p)) #=> 1.23
!s是 str(),! r是 repr(),而!a是 ascii()。自 Python 3.8 起可用。
print(f"{value!s}") # {str(value)} と同じ
print(f"{value!r}") # {repr(value)} と同じ
print(f"{value!a}") # {ascii(value)} と同じ
Python 3.8 也可以在你把 = 放在变量名后显示变量名。
name = "Yuhua"
age = 46
print(f"{name=}, {age=}") #=> name='Yuhua', age=46
3-10 字节串
“…”或“…”前面的b或B代表字节。处理图像数据和 UTF-8 以外的字符串等二进制数据。字节串和普通字符串转换如下。
byte_string = b"\xe3\x81\x82"
utf8_string = byte_string.decode() # 将字节转换为字符串
print(utf8_string)
Shift JIS(Shift_JIS)、Windows版Shift JIS(CP932)、EUC(EUC-JP)、ISO-2022-JP(所谓的JIS代码)等字符串(字节串)的转换如下进行
# 将Unicode字符串转换为UTF8/SJIS/CP932/EUC/JIS字节串
utf8_str = "啊"
utf8_bytes = utf8_str.encode ('utf-8') # UTF-8 字节:b'\xe3\x81\x82'
sjis_bytes = utf8_str.encode ('sjis') # Shift_JIS 字节:b'\x82\xa0'
cp932_bytes = utf8_str.encode ('cp932') # CP932 字节:b'\x82\xa0'
eucjp_bytes = utf8_str.encode ('euc_jp') # EUC-JP 字节:b'\xa4\xa2'
jis_bytes = utf8_str.encode ('iso2022_jp ') # ISO-2022-JP 字节串:b'\x1b$B$"\x1b(B'
# 将 UTF8/SJIS/CP932/EUC/JIS 字节字符串转换为 Unicode 字符串
utf8_str = utf8_bytes.decode
( 'utf-8') # A utf8_str
= sjis_bytes . ('cp932') # a
utf8_str = eucjp_bytes.decode ('euc_jp' ) # a
utf8_str = jis_bytes.decode ('iso2022_jp') # a
3-11 Unicode字符串
“…”或“…”之前的u或U表示 Unicode 字符串。在 Python 2 中使用 Unicode 时需要它。它曾在 Python 3.0 中被弃用,因为普通字符串在 Python 3 中被视为 Unicode 字符串,但出于兼容性考虑,它在 Python 3.3 中又恢复了。你“…”现在是“…”的同义词。
# coding: utf-8
print(len("永远不放弃")) # Python 2 为 15,Python 3 为 5
print(len(u"永远不放弃")) # 5
3-12 多行字符串
字符串可以用三重引号“””…”””或”’…”’跨多行书写。三重引号通常用作多行注释。
str = """A simple example module
This module is ...
"""
您可以使用反斜杠 ( \ )将其分成多行。
str = "Hello \
world!"
3-13 字符串连接
print("Hello " "world!")
3-14 转义序列 (\x)
您可以在字符串中使用以下转义序列:
\newline : 反斜杠和换行符被忽略
\\ : 反斜杠 (\)
\' : 单引号 (')
\" : 双引号 (")
\a : bell (BEL)
\b : backspace (BS)
\f : Form feed (FF)
\n : 换行符 (LF)
\r : 回车符 (CR)
\t : 制表符 (TAB)
\v : 垂直制表符 (VT)
\ nnn : 八进制符号(n 为 0 到 7)
\ x nn : 十六进制字符 (n 为 0 到 f)
\u xxxx : Unicode 字符 xxxx (例: u"\u3042")
\U xxxxxxxx : Unicode 字符 xxxxxxxx (例: U"\U00003042")
\N{name } : Unicode数据库字符(例如 u"\N{HIRAGANA LETTER A}")
3-15 字符串格式 (%)
您可以使用%运算符以类似于 C 语言 printf() 语句的表示法来格式化字符串,如下所示。第一个变量 errmsg 的值插入到 %s,第二个变量 errcode 的值插入到 %d。
errmsg = "Can't open file"
errcode = 19042
msg = "ERROR: %s (%d)" % (errmsg, errcode)
print(msg) #=> ERROR: Can't open file (19042)
%s是一个字符串,%d是一个整数,%f是一个浮点数,%x是一个十六进制数,%o是一个八进制数,%%是 % 本身。
print("%s" % "ABC") #=> ABC
print("%d" % 123) #=> 123
print("%f" % 1.23) #=> 1.230000
print("%x" % 255) #=> ff
print("%o" % 255) #=> 377
print("%%%d" % 80) #=> %80
字符宽度和位数可以用 % 后面的数值指定。
print("|%5s|" % 'ABC') #=> | ABC| : 右对齐 5 个字符
print("|%-5s|" % 'ABC') #=> |ABC | : 5 个字符左对齐
print("|%5d|" % 123) #=> | 123| :右对齐 5 位数字
print("|%-5d|" % 123) #=> |123 | : 左对齐 5 位数字
print("|%+5d|" % 123) #=> | +123| : 签名 ±
print("|%5.2f|" % 1.23) #=> | 1.23| : 总位数.小数位数
print("|%05d|" % 123) #=> |00123| :零填充