㈠ python3字符串都是什么编码
编码
字符串是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。
由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。
Unicode
Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。
现在,捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。
字母A用ASCII编码是十进制的65,二进制的01000001;
字符0用ASCII编码是十进制的48,二进制的00110000,注意字符'0'和整数0是不同的;
汉字已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。
如果把ASCII编码的A用Unicode编码,只需要在前面补0就可以,因此,A的Unicode编码是00000000 01000001。
新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
所以,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间:
字符
ASCII
Unicode
UTF-8
A 01000001 00000000 01000001 01000001
中 x 01001110 00101101 11100100 10111000 10101101
从上面的表格还可以发现,UTF-8编码有一个额外的好处,就是ASCII编码实际上可以被看成是UTF-8编码的一部分,所以,大量只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。
搞清楚了ASCII、Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式:
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:
浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:
所以你看到很多网页的源码上会有类似<meta charset="UTF-8" />的信息,表示该网页正是用的UTF-8编码。
Python的字符串
在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言,例如:
>>> print('包含中文的str')
包含中文的str
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。
在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。
Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行
#!/usr/bin/env python3# -*- coding: utf-8 -*-
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
格式化:
在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:
format % (...params)
>>> 'Hello, %s' % 'world''Hello, world'>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)'Hi, Michael, you have $1000000.'
%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,%x表示16进制整数,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
>>> '%2d-%02d' % (3, 1)' 3-01'>>> '%.2f' % 3.1415926'3.14'
有些时候,字符串里面的%是一个普通字符怎么办?这个时候就需要转义,用%%来表示一个%:
>>> 'growth rate: %d %%' % 7'growth rate: 7 %'
㈡ Python3基础
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码:
在 Python 3 中,非 ASCII 标识符也是允许的了。
保留字即关键字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:
Python中单行注释以 # 开头,实例如下:
执行以上代码,输出结果为:
多行注释可以用多个 # 号,还有 ''' 和 """:
执行以上代码,输出结果为:
python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:
以下代码最后一行语句缩进数的空格数不一致,会导致运行错误:
以上程序由于缩进不一致,执行后会出现类似以下错误:
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(),例如:
python中数字有四种类型:整数、布尔型、浮点数和复数。
实例
输出结果为:
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住: 空行也是程序代码的一部分。
执行下面的程序在按回车键后就会等待用户输入:
以上代码中 ," "在结果输出前会输出两个新的空行。一旦用户按下 enter 键时,程序将退出。
Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:
执行以上代码,输出结果为:
缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句(clause)。
如下实例:
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="" :
以上实例执行结果为:
在 python 用 import 或者 from...import 来导入相应的模块。
将整个模块(somemole)导入,格式为: import somemole
从某个模块中导入某个函数,格式为: from somemole import somefunction
从某个模块中导入多个函数,格式为: from somemole import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为: from somemole import *
import sys print ( ' ================Python import mode========================== ' ) ; print ( ' 命令行参数为: ' ) for i in sys . argv : print ( i ) print ( ' python 路径为 ' , sys . path )
from sys import argv , path # 导入特定的成员 print ( ' ================python from import=================================== ' ) print ( ' path: ' , path ) # 因为已经导入path成员,所以此处引用时不需要加sys.path
很多程序可以执行一些操作来查看一些基本信息,Python可以使用-h参数查看各参数帮助信息:
㈢ python代码的注释有几种
python代码的注释有两种。㈣ Python基本语法
1.Hello World
实例 HelloWorld.py
# !/usr/bin/python3
print(“Hello, World!”);
运行脚本
$python HelloWorld.py
注解:以如上方式运行,第一行无意义;但以./HelloWorld.py的方式运行,第一行则指定python解释器的位置
2.标识符
必须字母或下划线开头
标识符其他部分是字母、下划线和数字
大小写敏感
3.设置编码
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码:
# -- coding: cp-1252 --
4.注释
python单行注释以#开始,多行注释可以用多个#或'''和"""
例子
#!/usr/bin/python3
# 注释
# 注释
'''
注释
注释
'''
"""
注释
注释
"""
print (“Hello, World!”)
4.行和缩进
python使用行缩进代表代码块而不需要({}),同一个代码块的行缩进必须一致,否则报错。
5.多行语句
python如果一个语句过长可以用 实现多行语句。
sum = one +
two +
three
6.等待用户输入
执行下面的程序在按回车键后就会等待用户输入:
#!/usr/bin/python3
input(“按下 enter 键退出。”)
用户按下键时,程序将退出。
7.import 与 from…import
在 python 用 import 或者from…import来导入相应的模块。
将整个模块(somemole)导入,格式为:* import somemole*
从某个模块中导入某个函数,格式为:from somemole import somefunction
从某个模块中导入多个函数,格式为:from somemole import firstfunc, secondfunc, thirdfunc
将某个模块中的全部函数导入,格式为:from somemole import *
㈤ Python3 求个注释 请看代码
importos
all_files=os.listdir(os.curdir)#使用os.curdir表示当前目录更标准
type_dict=dict()#定义一个字典
foreach_fileinall_files:
ifos.path.isdir(each_file):
type_dict.setdefault('文件夹',0)#设置字典默认值如果没有这个键就添加为0
type_dict['文件夹']+=1#值+1
else:
ext=os.path.splitext(each_file)[1]#取扩展名
type_dict.setdefault(ext,0)#同上
type_dict[ext]+=1
#遍历字典得到相当文件数量
foreach_typeintype_dict.keys():
print('该文件夹下共有类型为【%s】的文件%d个'%(each_type,type_dict[each_type]))
㈥ Python中如何添加注释
1. 单行注释
Python编程语言的单行注释常以#最初,单行注释能够作为独自的一行放在被注释代码行之上,也能够放在语句或许表达式之后。
实例:
# -*- coding: UTF-8 -*-
print ("hello world!"); #您好,国际
2. 多行注释
Python中多行注释运用三个单引号(’’’)或许三个双引号(”””)来标记,而实际上这是多行字符串的书写方法,并不是Python本身提倡的多行注释方法。
实例:
'''
这是多行注释,运用单引号。
这是多行注释,运用单引号。
'''
"""
这是多行注释,运用双引号。
这是多行注释,运用双引号。
"""
3. 编码注释
在进行Python开发时,需进行编码声明,如选用UTF-8编码,需在源码上方进行 # -*- coding: UTF-8 -*- 声明,从Python3开始,Python默许运用UTF-8编码,所以Python3.x的源文件不需要特别声明UTF-8编码。
4. 平台注释
如果需要使Python程序运行在Windows平台上,需在Python文件的上方加上 #!/usr/bin/python 注释阐明。
关于Python中如何添加注释,青藤小编就和您分享到这里了。如果您对python编程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于python编程的技巧及素材等内容,可以点击本站的其他文章进行学习。