1.将vscode设置成中文
2.Python虚拟机(pythonw.exe)的路径
3.输出端和编辑器字体大小设置
4.配置flake8和yapf并关闭pylint工具。
flake8 是 pep8(Python增强建议书-检查代码风格)、pyflakes(检查代码错误)、mccabe(检查代码复杂度)以及其他第三方插件组合起来的工具。Yapf可以实现一键规范代码格式。
settings.json
{
"python.linting.flake8Enabled": true,
"python.formatting.provider": "yapf",
"python.linting.flake8Args": ["--max-line-length=248"],
"python.linting.pylintEnabled": false
}
launch.json
//加入
"console": "internalConsole",
Python、JavaScript、PHP 等脚本语言一般都是弱类型的。
弱类型语言有两个特点:
变量无须声明就可以直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。
变量的数据类型可以随时改变,比如,同一个变量可以一会儿被赋值为整数,一会儿被赋值为字符串。
注意,弱类型并不等于没有类型!弱类型是说在书写代码时不用刻意关注类型,但是在编程语言的内部仍然是有类型的。我们可以使用 type() 内置函数类检测某个变量或者表达式的类型。
1)整数范围无限
2)不同进制表示
0b 0o 0x
0B 0O 0X
3)可使用分隔符
Python 中的小数有两种书写形式:
1)十进制形式
这种就是我们平时看到的小数形式,例如 34.6、346.0、0.346。
书写小数时必须包含一个小数点,否则会被 Python 当作整数处理。
2) 指数形式
Python 小数的指数形式的写法为:
aEn 或 aen
a 为尾数部分,n 为指数部分,是一个十进制整数;E或e是固定的字符,用于分割尾数部分和指数部分。整个表达式等价于 a×10n。
注意,只要写成指数形式就是小数,即使它的最终值看起来像一个整数。例如 14E3 等价于 14000,但 14E3 是一个小数。
复数(Complex)是 Python 的内置类型,直接书写即可。换句话说,Python 语言本身就支持复数,而不依赖于标准库或者第三方库。
复数由实部(real)和虚部(imag)构成,在 Python 中,复数的虚部以j或者J作为后缀,具体格式为:
a+bj
复数支持乘法运算
若干个字符的集合就是一个字符串(String)。Python 中的字符串必须由双引号" "或者单引号’ '包围,具体格式为:
"字符串内容"
'字符串内容'
字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有文字。
str1 = 'I\'m a great coder!'
str2 = "引文双引号是\",中文双引号是“"
print(str1)
print(str2)
str1 = "I'm a great coder!" #使用双引号包围含有单引号的字符串
str2 = '引文双引号是",中文双引号是“' #使用单引号包围含有双引号的字符串
print(str1)
print(str2)
Python 不是格式自由的语言,它对程序的换行、缩进都有严格的语法要求。要想换行书写一个比较长的字符串,必须在行尾添加反斜杠。
注意,若反斜杠的下一行以缩进开头,躲进同样会被存入字符串。
另外,Python 也支持表达式的换行,例如:
num = 20 + 3 / 4 + \
2 * 3
print(num)
使用三个单引号或者双引号可以对多行内容进行注释,这其实是 Python 长字符串的写法。所谓长字符串,就是可以直接换行(不用加反斜杠\)书写的字符串。
如果长字符串没有赋值给任何变量,那么这个长字符串就不会起到任何作用,和一段普通的文本无异,相当于注释。
注意,此时 Python 解释器并不会忽略长字符串,也会按照语法解析,只是长字符串起不到实际作用而已。长字符串中的换行、空格、缩进等空白符都会原样输出
Python 字符串中的反斜杠\有着特殊的作用,就是转义字符。
转义字符有时候会带来一些麻烦,例如我要表示一个包含 Windows 路径
D:\Program Files\Python 3.8\python.exe
这样的字符串,在 Python 程序中直接这样写肯定是不行的,不管是普通字符串还是长字符串。因为\的特殊性,我们需要对字符串中的每个\都进行转义,也就是写成
‘’’ D:\Program Files\Python 3.8\python.exe’’’
这种形式才行。
如今引入原始字符串只需要在引号前加r即可
r’’‘D:\Program Files\Python 3.8\python.exe’’’
如果普通格式的原始字符串中出现引号,程序同样需要对引号进行转义,否则 Python 照样无法对字符串的引号精确配对;
但是和普通字符串不同的是,此时用于转义的反斜杠会变成字符串内容的一部分。
str1 = r'I\'m a great coder!'
print(str1)
输出结果是:
I’m a great coder!
如何理解这件事?
python解释器处理一个字符串会进行以下两个步骤
1.定位
所谓的定位是指python解释器处理一个字符串时要确定字符串的范围。这个过程是需要依赖转义字符的。
2.解释
确定了范围之后要对该范围内的字符集合进行解释,可以理解解释费为两种模式,原始字符串模式和普通模式。原始字符串模式不会考虑字符的转译。
需要注意的是,Python 原始字符串中的反斜杠仍然会对引号进行转义,因此原始字符串的结尾处不能是反斜杠,否则字符串结尾处的引号会被转义,导致字符串不能正确结束。
在 Python 中有两种方式解决这个问题:一种方式是改用长字符串的写法,不要使用原始字符串;另一种方式是单独书写反斜杠,这是接下来要重点说明的。
例如想表示D:\Program Files\Python 3.8\,可以这样写:
str1 = r'D:\Program Files\Python 3.8' '\\'
print(str1)
我们先写了一个原始字符串r’D:\Program Files\Python 3.8’,紧接着又使用’\'写了一个包含转义字符的普通字符串,Python 会自动将这两个字符串拼接在一起,所以上面代码的输出结果是:
D:\Program Files\Python 3.8\
布尔类型只有两个值True False
对于if while,非零都是为True,零为False
同时True就代表1, False代表0,他们可以参加算术运算
复数是python内置的类型,和整型浮点型一样的地位
复数支持加减乘的运算
Python 缓冲机制是为提高程序执行的效率服务的,实际上就是在 Python 解释器启动时从内存空间中开辟出一小部分,用来存储高频使用的数据,这样可以大大减少高频使用的数据创建时申请内存和销毁时撤销内存的开销。
Python 在存储数据时,会根据数据的读取频繁程度以及内存占用情况来考虑,是否按照一定的规则将数据存储缓存中。那么问题来了,内存重用机制适用于哪些基本数据类型呢?
之后我讲字典,列表,集合和元组的时候还会讲到元组也是可重用的。
总体规律是,若一个变量内部是不可修改的,那么python解释器就会根据相应的规则重用对应的内存空间。
可以理解为python里所有的变量都是引用变量(类似于c语言的指针),python提供给开发者有关变量的接口无非就是 定义 读取 修改,若几个变量对应的类型相同且无法被修改,同时它们的值又相同,那么何不妨把他们都指向同一块存储空间呢?
若一个变量内部可以被修改,则不会重用内存。
但是请注意,这种赋值运算符只能针对已经存在的变量赋值,因为赋值过程中需要变量本身参与运算,如果变量没有提前定义,它的值就是未知的,无法参与运算。例如,下面的写法就是错误的:
n += 10
该表达式等价于 n = n + 10,n 没有提前定义,所以它不能参与加法运算。
初学 Python,大家可能对 is 比较陌生,很多人会误将它和 == 的功能混为一谈,但其实 is 与 == 有本质上的区别,完全不是一码事儿。
== 用来比较两个变量的值是否相等,而 is 则用来比对两个变量引用的是否是同一个对象
Python 逻辑运算符用于操作 bool 类型的表达式,执行结果也是 bool 类型。这么说正不正确?
看下面的程序:
url = "http://www.baidu.com"
print("----False and xxx-----")
print( False and print(url) )
print("----True and xxx-----")
print( True and print(url) )
print("----False or xxx-----")
print( False or print(url) )
print("----True or xxx-----")
print( True or print(url) )
表达式1 if 判断 else 表达式2
三目运算符支持嵌套
a = int( input("Input a: ") )
b = int( input("Input b: ") )
print("a大于b") if a>b else ( print("a小于b") if a<b else print("a等于b") )
print() 函数的详细语法格式如下:
print (value,...,sep='',end='\n',file=sys.stdout,flush=False)
print可以有任意多个参数,每个参数用sep相隔,结尾会输出end,支持文件格式输出file,flush用于控制输出缓存,该参数一般保持为 False 即可,这样可以获得较好的性能。
下面是对文件读写的代码
f = open("demo.txt","w")#打开文件以便写入
print('沧海月明珠有泪',file=f)
print('蓝回日暖玉生烟',file=f)
f.close()
转换说明符
转换说明符 只是一个占位符,它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替。
例一
a = 100
b = 200
c = 300
print("%d" % a)
print("%d %d %d" % (a, b, c))
例二
name = '小黑'
age = 19
print("%s今年%d岁了!" % (name, age))
同时我们还可以对转换说明符进行修饰
例如
%10d 整数,宽度至少10字节
%-d 指定左对齐
%+d 强制加符号
%0d 宽度不足时补0,而不是补空格
%.6f 是小数,且精度为6
几点说明:
对于整数,指定左对齐时,在右边补 0 是没有效果的,因为这样会改变整数的值。
对于小数,以上三个标志可以同时存在。
对于字符串,只能使用-标志,因为符号对于字符串没有意义,而补 0 会改变字符串的值。
混合使用的例子:
%+08.3f
这里输出小数,并且左对齐空余的地方补0,宽度最少为8,精度为3