From a89a407da7b7f971c2c7b2eedc1ef87b1cefea85 Mon Sep 17 00:00:00 2001 From: star <1563232784@qq.com> Date: Thu, 24 Dec 2020 01:53:18 +0800 Subject: [PATCH] =?UTF-8?q?Python=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Python\345\237\272\347\241\200.md" | 330 ++++++++++++++++-- 1 file changed, 309 insertions(+), 21 deletions(-) diff --git "a/notes/Python\350\257\255\350\250\200/Python\345\237\272\347\241\200/Python\345\237\272\347\241\200.md" "b/notes/Python\350\257\255\350\250\200/Python\345\237\272\347\241\200/Python\345\237\272\347\241\200.md" index d5925b1..a5b6b25 100644 --- "a/notes/Python\350\257\255\350\250\200/Python\345\237\272\347\241\200/Python\345\237\272\347\241\200.md" +++ "b/notes/Python\350\257\255\350\250\200/Python\345\237\272\347\241\200/Python\345\237\272\347\241\200.md" @@ -9,6 +9,8 @@ Python 官网:https://www.python.org/ 1. [计算机基础知识](#1计算机基础知识) 2. [Python 简介](#2Python 简介) 3. [Python 基本语法](#3Python 基本语法) +4. [Python 数据类型](#4Python 数据类型) +5. [Python 运算符](#5Python 运算符) @@ -355,13 +357,27 @@ Python 开发工具 IDLE **PyCharm 的安装及使用** 1. 在官网下载 PyCharm 并安装:https://www.jetbrains.com/pycharm/download/other.html + 2. 双击 PyCharm 运行,点击 `Create New Project` 创建新项目。 + 3. 选择 `Pure Python` 创建一个简单的纯 Python 项目,在 Location 处输入项目存放位置。 + 4. 展开 `Project Interpreter`,为项目指定一个独立的 Python 解释器(也可直接使用默认值)。 + 5. 点击 `create` 创建项目。 + 6. 右键左侧窗口的项目名 --> 选择 New --> 选择 Python File --> 输入文件名创建 Python 文件。 + 7. 编写 Python 文件内容,点击顶部工具栏上的 Run 运行编写的 Python 文件。 -8. 如果控制台输出正常,则简单的 Python 项目搭建完成。 + + ~~~python + # Python 的输出语句 + print("Hello Python!") + # Python 的 print 方法可以输出多个参数,输出时将会自动在每一个参数之间添加空格 + print("Python is", 26, "years old.") + ~~~ + +8. 控制台输出正常,PyCharm 的安装完成。 @@ -413,18 +429,6 @@ Python 开发工具 IDLE 5. 在 Python 中使用 `#` 来表示单行注释,# 后的内容都属于注释,注释的内容将会被解释器所忽略(习惯上 # 后边跟一个空格)。 - Python 的多行注释使用 `'''` 或 `"""` 表示 - - ~~~python - ''' - 单引号表示的多行注释 - ''' - - """ - 双引号表示的多行注释 - """ - ~~~ - **Python 变量** @@ -437,7 +441,7 @@ Python 开发工具 IDLE ​ 变量可以用来保存字面量,变量中保存的字面量是不定的,变量本身没有任何意思,根据不同的字面量表示不同的意思。 -​ 在 Python 中使用变量不需要定义,直接为变量赋值即可。 +​ 在 Python 中使用变量不需要定义,直接为变量赋值即可,如:`a = "123"` ​ 不能使用没有进行过赋值的变量。 @@ -480,34 +484,318 @@ Python 开发工具 IDLE - 类名:使用帕斯卡命名法,内部类使用额外的下划线开头,如:MyClass,_InnerClass - - 函数:使用下划线命名法,如:example_function + - 函数&方法:使用下划线命名法,如:example_function + + ​ 类内部函数命名,使用单下划线开头(该函数可被继承访问)。 + + ​ 类内部私有函数命名,使用双下划线开头(该函数不可被继承访问)。 + + - 函数&方法的参数:使用下划线命名法,同时总使用 `self` 作为实例方法的第一个参数,总使用 `cls` 作为类方法的第一个参数,如:function_param,self,cls + + - 变量:使用下划线命名法,同时因为 Python 是动态类型语言,所以变量名不应带有类型信息,如 iValue,names_list 等都是不好的命名。 + + ​ 类内部变量命名,使用单下划线开头(该变量可被继承访问)。 + + ​ 类内部私有变量命名,使用双下划线开头(该变量不可被继承访问)。 + + - 异常:使用帕斯卡命名法,同时以 `Error` 结尾,如:NameError + + - 常量:使用下划线命名法,但是常量名所有的字母均大写,如:MAX_OVERFLOW + +> Python 中下划线的含义 +> +> 1. 单前导下划线:\_var、\_function,它有一个约定俗成的含义:以单个下划线开头的变量或方法仅供内部使用;它只是对程序员的一个提示, 程序的行为不会受其影响。 +> +> ​ 注:在使用通配符导入模块时,以单下划线开头的变量或方法不会导入,常规导入不受影响(我们应该尽量避免通配符导入)。 +> +> 2. 单末尾下划线:var\_、function\_,当一个变量的最合适的名称已经被一个关键字所占用,此时可以附加一个下划线来解决命名冲突,如:class\_ +> +> 3. 双前导下划线:\_\_var、\_\_function,双下划线前缀会导致 Python 解释器重写属性名称,在类被扩展的时候不容易与子类中的命名产生冲突。 +> +> ​ 注:使用此种方式命名时,如果你创建了一个子类,那么你将不能轻易地覆写父类中的方法或变量。 +> +> 4. 双前导和双末尾下划线:\_\_var\_\_,使用这种用法表示 Python 中特殊的方法或变量,如:\_\_init\_\_,\_\_all\_\_ 等。 +> +> 5. 单下划线:\_,使用独立下划线是用作一个名字,表示某个变量是临时的或无关紧要的,如使用 for _ in range(10): 用来循环。 + + + +--- + +### 4.Python 数据类型 + +**数值** + +在 Python 中,数值分为了三种:整数,浮点数,复数 + +整数:在 Python 中所有的整数都是 int 类型,如:10,-5 等,整数的大小没有限制,可以是任意大小。 + +​ 在书写时,如果整数长度过大,可以使用下划线做分隔符,如:10\_000 + +​ 其他进制的整数写法: + +​ 1.二进制(Binary):以 0b 开头,如:0b101101 + +​ 2.八进制(Octal):以 0o 开头,如:0o1574 + +​ 3.十六进制(Hexadecimal):以 0x 开头,如:ox51ac8 + +​ 注意:为了避免混淆,Python 总会以十进制输出数字(所有语言都如此)。 + +浮点数:在 Python 中所有的小数都是 float 类型,如:0.78,1.22 + +​ 对浮点数进行运算时,可能会得到一个不精确的结果,可以通过模块 decimal 进行计算。 + +复数:数学概念,见:https://baike.baidu.com/item/%E5%A4%8D%E6%95%B0/254365 +$$ +方程:x^2 - 2x + 2 = 0;解得:x^2 - 2x + 1 = -1;解得:(x - 1)^2 = -1;解得:x - 1 = \sqrt{-1};解得:x = 1 + \sqrt{-1};即:x = 1 - 1i +$$ +​ 其中 1 - 1i 就是一个复数,由实部 1 和虚部 -1 组成,虚部后加字母 i 表示。 + +在 Python 中,使用 a + bj 来表示复数: + +~~~python +# 复数 +num = 1 + 2j +# 打印 num 的实部 +print(num.real) +# 打印 num 的虚部 +print(num.imag) +~~~ + + + +**字符串** + +字符串用来表示一段文本信息,在 Python 中,字符串需要使用单引号或双引号引起来,单引号和双引号可以同时使用,但相同的引号之间不能嵌套。 + +长字符串:使用三重引号来包含文字内容,内容之间可以随意换行 + +```python +a = '''abc +efg +''' +print(a) +``` + +字符串支持转义符,如:`\n` 表示换行,`\u1234` 表示 Unicode 编码 1234 表示的字符。 + +> 在 Python 中,字符串之间可以使用加号进行拼接,但是字符串也只能与字符串进行拼接,与其他类型的数据(如:int)拼接时会报错:TypeError + +字符串格式化: + +1. 字符串占位符 %s:%s 表示任意字符串 + + 使用方法:字符串外加一个 %,然后紧跟需要填充的内容 + + ~~~python + # 单占位符 + msg = 'Hello,%s' % 'Niko' + print(msg) + # 将数字作为字符串填充进去 + msg = 'I\'m %s years old.' % 25 + print(msg) + # 多占位符,括号内的内容按顺序填充 + msg = 'Hello,%s,I %s you so much!' % ('Niko', 'miss') + print(msg) + ~~~ + + 输出结果: + + ~~~markdown + Hello,Niko + I'm 25 years old. + Hello,Niko,I miss you so much! + ~~~ + + 我们还可以在 % 后面加上数字来限制填充内容的最小(最大)长度,如果少于(超出)该长度,将会对字符串前方添加空格(截除多余内容),如:%3s,%3.5s + + ~~~python + # 限制填充内容长度至少为 5 + msg = 'Nice to meet you,%5s' % 'Niko' + print(msg) + # 限制填充内容长度至少为 3,最多为 5 + msg = 'Nice to meet you,%3.5s' % 'Charles' + print(msg) + ~~~ + + 输出结果: + + ~~~markdown + Nice to meet you, Niko + Nice to meet you,Charl + ~~~ + +2. 整数占位符 %d:对整数内容进行格式化填充 + + 限制整数的长度,如:%4d,填充长度至少是 4,不够时在前面加空格;%.4d,填充长度至少是 4,不够时在前面加 0 + + ~~~python + msg = 'There are %.4d eggs in the basket' % 123.5700 + print(msg) + msg = 'There are %4d eggs in the basket' % 123.5700 + print(msg) + ~~~ + + 输出结果: + + ~~~markdown + There are 0123 eggs in the basket + There are 123 eggs in the basket + ~~~ + +3. 浮点数占位符 %f:对浮点数内容进行格式化填充 + + 限制小数位数,如:%.3f,保留 3 位小数,多于 3 位的会被截除,少于 3 位的则在末尾添加 0 + + ~~~python + # 限制小数位数 + msg = 'There are %.2f eggs in the basket' % 123.5700 + print(msg) + ~~~ + + 输出结果: + + ~~~markdown + There are 123.57 eggs in the basket + ~~~ + +格式化字符串:在字符串前加 f 或 F 表示该字符串是一个格式化字符串,格式化字符串中可以直接引用变量 + +~~~python +age = 25 +name = "James" +introduction = f"{name} is {age} years old." +print(introduction) +~~~ + +输出结果: - - 函数参数:使用下划线命名法,同时总使用 `self` 作为实例方法的第一个参数,总使用 `cls` 作为类方法的第一个参数,如:function_param,self,cls +~~~markdown +James is 25 years old. +~~~ - - +字符串复制:在 Python 中,如果使用字符串与整数相乘,相当于把字符串重复指定次数并拼接 - +~~~python +# 字符串复制 +a = "Hello " +a *= 5 +print(a) +~~~ - - +输出结果: +~~~markdown +Hello Hello Hello Hello Hello +~~~ +**布尔值** +在 Python 使用 bool 表示布尔值,用来表示真(True)或假(False)两个值(在 Python 中布尔值的首字母大写)。 +~~~python +# 布尔值 +a = True +b = False +~~~ -**Python 运算符** +在 Python 中 True 相当于整数 1,False 相当于整数 0 +~~~python +print(1 + True) +print(1 + False) +~~~ +输出的结果是:2、1 +**空值(None)** +在 Python 中,使用 None 来表示空值,不存在。 +**类型检查** + +在 Python 中,使用 type() 函数检查变量的值的数据类型 + +~~~python +# 类型检查 +print(type("str")) +print(type(1)) +print(type(1.2)) +print(type(1 + 2j)) +print(type(False)) +print(type(None)) +~~~ + +输出结果: + +~~~markdown + + + + + + +~~~ + + + +**对象(Object)** + +Python 是一门面向对象的语言,在 Python 中任何东西都可看作对象,例如:数值、字符串、布尔值、None 都是对象 + +每个对象都保存了 3 中属性: + +- id:用来标识对象的唯一性,使用 id() 函数进行查看。 + + ~~~python + print(id("Hello")) + ~~~ + + 输出:1985004694768,由解释器生成,在 CPython 中,此值就是该对象的内存地址。 + + 对象一旦创建,其 id 永远不能改变。 + +- type:用来标识对象的类型,使用 type() 函数进行查看。 + + Python 是一门强类型的语言,对象一旦创建,其 type 也永远不能改变。 + +- value:用来标识对象当中存储的具体数据,当我们使用 print() 打印时,就是打印的对象的值。 + + 在 Python 中,对象的值可以改变,可以改变值的对象叫可变对象(如:list,set),不可以改变值的对象叫不可变对象(如:int,float)。 + + + +**变量和对象** + +在 Python 中,变量更像是对象的一个别名,变量当中存储的是对象的内存地址。 + + + +**类型转换** + +在 Python 中,可以对变量的值进行类型转换(不是改变对象的类型,而是创建一个新的类型的对象重新赋值给变量)。 + +类型转换的 4 个函数:int()、float()、str()、bool() + +类型转换不会改变变量的值,而是返回转换后的结果,需要重新赋值才可转换变量类型。 + +注意事项: + +1. float 转 int 是省略小数点后的结果。 +2. 小数字符串不能直接转换为 int,如 int('12.5') 会抛出异常:ValueError +3. 类型转换函数不能转换 None 值。 +4. 使用 bool() 可以将 空数值(0、0.0)、空字符串(''、"")、空(None)、空集合([]、()、{})转为 False,其他情况下都是 True。 + --- +### 5.Python 运算符 + -- GitLab