Python-01-基础语法
命名规范
模块名:短小,全小写字母,下划线分割。
包名:全小写,其他和 Java 一样 space.xorex.bookstore。
类名:和 Java 完全一样,首字母大写的驼峰命名。
函数名,变量名:全小写字母,下划线分割。
常量:全大写。下划线分割
数据类型
int 整形
对于 Python 来说,无论多长的整数,都是 int 类型。会在内部随着大小在 byte short int long 高精度 进行自动切换,不需要担心转化的问题。
可以用不同进制的数赋值,并进行运算也是可以的!
1 | num1 = 0x22 |
float 浮点数
同样支持 float double 高精度 随时切换,对外展示为 float 类型。
并且支持指数表示法:比如 1.234E23
complex 复数
Python 内置复数处理,没错就是实部+虚部,其中 a 和 b 是实数,则使用 a+bj 表示复数。
1 | complex_number = 1 + 4j |
输出类型是复数 complex
str 字符串
字符串,Pythno 字符串中,单引号和双引号没有任何区别,但是还是建议双引号。同时字符串不可被改变。
可以使用反斜杠来进行字符串转义。
对于换行来说,使用 \ 可以表示下一行也是内容。下面输出 Tempest Xorex
1 | str = "Tempest " \ |
可以用 ‘’’ 或者 “”” 里面放格式自由的字符串。
bytes 字节串
字节串和字符串比较相似,字符串是保存的一个个字符,字节串则是保存的一个个字节,可以类比字节数组 bytes[] 。字节串可以存储字符串,音频,图片等等由字节组成的数据。
将字符串转化为字节串:
- 如果字符串内容都是 ASCII,在字符串常量前面加 b 即可转化:
1 | bytes_var = b"Xorex" |
- python 内置 bytes 类型的构造方法,可以通过构造方法获取
1 | bytes_b = bytes("你好呀","UTF-8") # 字符串和转化字节的编码 |
- 利用字符串对象的 encode() 方法,返回一个字节串
1 | bytes_a = "你好呀".encode("UTF-8") |
bool 布尔
True 和 False 两种
类型转换
Python 类型转换是通过函数完成的。下面是要转化为对应的类型的转化函数:
函数 | 作用 |
---|---|
int(x) | 将 x 转换成整数类型 |
float(x) | 将 x 转换成浮点数类型 |
complex(real,[,imag]) | 创建一个复数 |
str(x) | 将 x 转换为字符串 |
repr(x) | 将 x 转换为表达式字符串 |
eval(str) | 计算在字符串中的有效 Python 表达式,并返回一个对象 |
chr(x) | 将整数 x 转换为一个字符 |
ord(x) | 将一个字符 x 转换为它对应的整数值 |
hex(x) | 将一个整数 x 转换为一个十六进制字符串 |
oct(x) | 将一个整数 x 转换为一个八进制的字符串 |
str(x) 和 repr(x)
两个都是对象的 toString() 方法,不同的是打印信息的目的不太相同:
str() 的输出追求可读性,输出格式要便于理解,适合用于输出内容到用户终端。
repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用。
repr: representation 展示、演示。
eval(str)
只要是 Python 能计算的表达式的字符串,放到里面都可以被解析计算。
ord(x)
ord() ordinal 顺序的次序的,返回字符在 Unicode 中的编码次序,为 int 类型。
缓存机制
类似于 Java 的字符串类型的机制,不过由于 Python 没有基本数据类型,所以原本 Interger 这种包装类的缓存机制,也一并被 Python 统一设置在了全局里面。
数据类型 | 是否可以重用 | 生效范围 |
---|---|---|
范围在 [-5, 256] 之间的小整数 | 如果之前在程序中创建过,就直接存入缓存,后续不再创建。 | 全局 |
bool 类型 | ↑ | ↑ |
字符串类型数据 | ↑ | ↑ |
大于 256 的整数 | 只要在本代码块内创建过,就直接缓存,后续不再创建。 | 本代码块 |
大于 0 的浮点型小数 | ↑ | ↑ |
小于 0 的浮点型小数 | 不进行缓存,每次都需要额外创建。 | ↑ |
小于 -5 的整数 | ↑ | ↑ |
输入输出
输入 input()
将控制台的一行输入并返回为字符串。其中 input() 函数里面可以输入字符串作为输入提示。
1 | name=input("请输入你的名字:") |
输出 print()
来看看 print() 函数的定义吧,我相信看了就懂:
1 | # known special case of print |
默认分隔符空格,结尾是换行,输出到屏幕上(sys.stdout)。于是可以这样写:
1 | print("Tempest","Xorex", end="[end]",sep="[sep]") |
然后输出:Tempest[sep]Xorex[end]
也可以设置 file 属性,定义输出位置,接收参数可以是 open() 打开的文件。
print() 支持格式化输出,和 C 语言一样,在字符串中添加占位符,然后紧跟着字符串后面,表示占位符代替的变量。当一个占位符的时候可以不加括号,多个就需要加括号。
1 | first_name = "Tempest" |
输出:First Name: Tempest; Last Name: Xorex; age: 18;
剩下的诸如输出宽度,输出精度,对齐方式什么的,就和 C 语言是一样的了。
Python 运算
算数运算
和 Java 相比,除了基本的加减乘除模,多了整除 // 和幂运算
少了 自增 和 自减,因为 Python 中数字是常量对象,只能转移变量指向的对象,无法修改对象。
位运算
和 Java 的一样,只支持整形运算,运算位数取决于最长的那个数。
关系运算符
除了 大于小于等于不等于大于等于小于等于 以外,多了两个: is
和 is not
。
前面的都是拿着字面量进行比较,而 is
和 is not
是进行对象地址进行比较的。
1 | x = 187987897234234 |
逻辑运算符
逻辑运算符 and or not,支持任何数据类型(不仅仅是 Bool),支持短路运算。
运算优先级和结合性
反正小括号优先级最高,不确定就加小括号。