文章目录
序言
树上春树曾说:如果我爱你 而你也正巧爱我.你头发乱了的时候 我会笑笑地替你拨一拨 然后 手还留恋地在你发上多待几秒.
但是 如果我爱你 而你不巧地不爱我.你头发乱了 我只会轻轻地告诉你 你头发乱了喔
0. 安装Python 环境,这里博主就使用以前搭配的 Anaconda 环境
1. Python 和 Sublime 的整合
安装PythonREPL 插件并简单设置(f5快捷运行Python 代码)
{ "keys": ["f5"], "caption": "SublimeREPL:Python","command": "run_existing_window_command", "args":{"id": "repl_python_run","file": "config/Python/Main.sublime-menu"}},
其实Sublime 内置了 ctrl+b 也可以快速执行Python 代码
设置单行字数的竖向分割线:"rulers":[80],
2. 基本概念
表达式:表达式一般仅仅用了计算一些结果,不会对程序产生实质性的影响
语句:在程序中语句一般需要完成某种功能,比如打印信息、获取信息、为变量赋值。。。
程序:算法+数据结构
函数:内置函数和自定义函数;参数和返回值
3. 字面量和变量
字面量:字面量所表示的意思就是它的字面的值,在程序中可以直接使用字面量
变量:变量本身没有任何意思,它会根据不同的字面量表示不同的意思
一般我们在开发时,很少直接使用字面量,都是将字面量保存到变量中,通过变量来引用字面量
4. 变量和标识符
标识符:Python 中所有可以自主命名的内容都属于标识符,比如:变量名,函数名,类名
标识符必须遵守标识符的规范:
1. 标识符中可以含有数字,字母,_,但是不能以数字开头
2. 标识符不能使用Python 的关键字和保留字
3. 也不建议使用Python 的函数名作为标识符(print = 10,这样会导致print 函数被覆盖)
4. 命名规范:
- 下划线命名法(推荐变量和方法名):所有单词小写,单词之间使用_分割:user_name, user_age
- 大驼峰命名法(帕斯卡命名法,推荐类名):首字母大写,每个单词开头大写,其余字母小写:HelloWrld MaxLength
5. 数据类型
数值:Python 中的数值分为三种:整数(int),浮点数(float),复数
- Python 中的整数都是 int 类型
- Python 中的整数没有大小限制,如果数字过大,可以使用下划线作为分隔符
- 注意:Python 中的整数不能使用 0 开头,如:num = 012
并且其他进制的数字打印到控制台一定是以十进制显示
二进制:0b开头
八进制:0o开头
十六进制:0x开头
- Python 中的小数都是float 类型,对浮点数进行运算,可能会得到不精确的结果
字符串(str):Python 中使用引号引起来:'Cris',单引号/双引号均可,但是不要混着用
- 相同的引号之间不能嵌套:"cris say:"hello!""(报错)
- 解决方案:"cris say:'hello!'"
- 单引号和双引号不能跨行使用,可以使用\结尾解决,但是打印出来的结果还是没有换行
- 解决方案:三重引号 '''xxx''' / """xxx""",可以换行,可以保留格式
- 转义字符:\,通过\ 可以在字符串中表示特殊的内容
- \' 表示 '
- \" 表示 "
- \t 表示制表符 tab
- \n 表示换行符
- \\ 表示\ 本身
- \uxxxx 表示特殊的 Unicode 编码
- 格式化字符串
1. 字符串之间可以使用+ 拼接(不推荐,因为字符串只能和字符串进行拼接)
2. 可以使用 print("a = ",a) 的形式
3. 使用 print("name=%s"%name)
注意:可以使用%3 的形式对字符串进行长度限制
%s 可以对任意数据类型进行字符串类型的转换
%f 指定小数
%d 指定整数
4. 3版本的Python 提供了新的字符串格式化方法,通过在字符串前面加上f 来创建一个格式化字符串
c = f'my name is {name}'
其中 {name} 表示一个存在的变量名
- 字符串的复制:将字符串和数字*
布尔值(bool)和空值(NoneType)
- bool 用于逻辑判断,只有True 和False
- bool 实际上也是可以转换为整型的,True 相当于1,False 相当于0
- None 表示不存在
类型检查
- type()
6. 对象(Object)
- Python 是一门面向对象的语言
- 对象的结构(每个对象中都要保存三种数据)
- id(标识)
> id用来标识对象的唯一性,每一个对象都有唯一的id
> 对象的id就相当于人的身份证号一样
> 可以通过id()函数来查看对象的id
> id是由解析器生成的,在CPython中,id就是对象的内存地址
> 对象一旦创建,则它的id永远不能再改变
- type(类型)
> 类型用来标识当前对象所属的类型
> 比如:int str float bool 。。。
> 类型决定了对象有哪些功能
> 通过type()函数来查看对象的类型
> Python是一门强类型的语言,对象一旦创建类型便不能修改
- value(值)
> 值就是对象中存储的具体的数据
> 对于有些对象值是可以改变的
> 对象分成两大类,可变对象 不可变对象
可变对象的值可以改变
不可变对象的值不能改变,之前学习的对象都是不可变对象
7. 变量和对象
- 对象并没有直接存储到变量中,在Python中变量更像是给对象起了一个别名
- 变量中存储的不是对象的值,而是对象的id(内存地址),
当我们使用变量时,实际上就是在通过对象id在查找对象
- 变量中保存的对象,只有在为变量重新赋值时才会改变
- 变量和变量之间是相互独立的,修改一个变量不会影响另一个变量
8. 类型转换
- 所谓的类型转换,将一个类型的对象转换为其他对象
- 类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新对象
示例代码
# @Auther:Cris
# Python 严格区分大小写
print('cris')
# Python 中每行就是一条语句,以换行结束
print('jack')
print('simida')
# Python 中每行语句不要过长(优雅,简洁,好看),建议每行不要超过80个字符
# 语句如果想要跨行编写,直接加上\即可
# Python 是缩进严格的语言
# Python 中使用 # 表示注释,注意Python 中的注释都是使用的 # 表示单行注释,多行注释
# Python 中使用变量,不需要声明,直接为变量赋值即可
# 但是不能使用没有赋值过的变量
# Python 是动态类型的语言,可以为变量赋任意数据类型的值,也可以任意修改变量的值
salary = 100
print(salary)
salary = 'cris'
salary = 123_456_789 # 123456789
# salary = 012 报错
salary = "cris say:'hello!'" # cris say:'hello!'
print(salary)
content = '''hello
world!
Python
'''
print(content)
# hello
# world!
# Python
print("a=%s"%"cris") # a=cris
print("a=%5s"%"cris") # a= cris
print("a=%2.5s"%"cris") # a=cris
name = 'james'
c = f'my name is {name}'
print(c) # my name is james
a = "cris"
a = a*2
print(a) # criscris
a = True
print(a+1) # 2
print(type(a)) # <class 'bool'>
print(type(1.1))
print(type(None)) # <class 'NoneType'>
print(id(12)) # 1797942688
a = 123
b = a
b = 321
print(a) # 123
print(b) # 321
# Python 不支持字符串的+ 连接其他数据类型
a = 'cris'
# a = a+12 报错
print(a)
# 类型转换有四个内置函数:int(), float(), str(), bool()
a = True
a = int(a) # 1
print(type(a)) # <class 'int'>
# int(): 用来将其他的数据类型转换为整型
# 布尔值:True -> 1, False -> 0
# 浮点数:直接取整
# 字符串:必须是整数数字
# None:报错
# float():同int() 基本一致,只是将符合的数据类型转换为小数类型,例如 True -> 1.0, False -> 0.0
# str():将其他数据类型转换为字符串类型
a = "123"
print(a+str(456));
print(str(None)) # None
# bool():任何对象都可以转换为布尔值,所有表示空性的数据都是False,表示非空的数据都是True
# 0,'', None -> Flase
9、运算符(操作符)
- 运算符可以对一个值或多个值进行运算或各种操作
- 比如 + 、-、= 都属于运算符
- 运算符的分类:
1.算术运算符
2.赋值运算符
3.比较运算符(关系运算符)
4.逻辑运算符
5.条件运算符(三元运算符)
示例代码
# 算术运算符(+,-,*,/)
# 如果是两个字符串之间进行 + 操作,就会进行拼串;进行 - 操作,就会报错;
# 如果是一个字符串和整数进行 * 操作,就会对该字符串进行复制
# bool 可以参与计算(True->1, False->0)
# / 操作,总会返回一个浮点数类型
# // 整除,只会返回一个整数类型(舍弃小数部分)
# ** 求幂运算;如果 ** 0.5,表示求平方根
# % 取模运算,返回余数
# 浮点数进行运算,返回结果都是浮点数类型
a = 10+True # 11
print(a)
a = a * False
print(a) # 0
a = "cris" * 2
print(a) # criscris
a = 10 ** 2
print(a) # 100
a = 10
print(a/2) # 5.0
# 赋值运算符
# =;+=;-=;*=;**=;/=;//=;%=
# 关系运算符:用来比较两个值之间的关系,关系成立返回 True,关系不成立返回 False
# >; >=; ==; <; <=; !=
# True 和 False 也可以参与比较
# 支持两个字符串的比较,比较的是Unicode 值(逐位比较),可以用来排序字符串的字母顺序
print(1 == True) # True
# == 和 != 比较的是对象的值,而不是 id
# 如果要比较对象的id(内存地址),需要使用 is 或者 is not
print(id(1), id(True)) # 1583901760 1583411360
print(1 == True) # True
print(1 is True) # False
# 逻辑运算符
# not 逻辑非,对于布尔值进行取反操作;对于非布尔值,先将其转换为布尔值,然后进行取反
# and 逻辑与,两端都是True,才为True,否则都为False,并且是短路与(优先找False,第一个值为False,不会计算第二个值 )
# or 逻辑或,有一个值为True,那么返回True,并且是短路或(优先找True,第一个值是True,不会计算第二个值)
a = 1
a = not a
print(a) # False
a = False and True
print(a) # False
a = False and 1/0
print(a) # False
a = True or 1/0
print(a) # True
# a = False or 1/0 # 报错
# 非布尔值的与或运算,Python 自动将它们转换为布尔值
# 与运算:如果第一个值是True,那么直接返回第二个值的原值;如果第一个值是False,直接返回第一个值的原值
# 或运算:如果第一个值是True,那么直接返回第一个值的原值;如果第一个值是False,直接返回第二个值的原值
a = 1 and 0
print(a) # 0
a = 0 and 'cris'
print(a) # 0
a = 1 or 0
print(a) # 1
a = None or 2
print(a) # 2
# 连续>或者<的语句其实就是逻辑运算符(Python 独有的)
a = 1<2<3 # 等价于 1<2 and 2<3
# 条件运算符(三目运算符)
# 语法:语句1 if 条件表达式 else 语句2
# 如果条件表达式为True,执行语句1并返回结果
# 如果条件表达式为False,执行语句2并返回结果
print("cris" if 2 > 0 else 'simida') # cris
print('cris' if 1 > 4 else 'simida') # simida
# 获取a和b之间的最大值
a = 10
b = 20
max = a if a>=b else b
print(max) # 20
# 计算三个数之间的最大值
c = 30
max = a if a>b else b
max = max if max>c else c
print(c) # c
# max = a if (a>b and a>c) else (b if b>c else c)
# 运算符的优先级(and 的优先级大于 or,推荐查看运算符优先级表或者使用括号提高语句的优先级)