Python介绍
Pytho由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代
品Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Pytho语法和动态类型,以及解释
型语言的本质,
Pytho解释器易于扩展,可以使用C语言或C+±(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码
Python开发环境搭建
产考文档:
- 开发环境搭建就是安装Python的解释器
- Python的解释器分类:
- CPython(官方)
用c语言编写的Python解释器 - PyPy
用Pythoni语言编写的Python解释器 - IronPython
用.net
编写的Python解释器 - Jython
用Java编写的Python解释器
- 参考:基础环境搭建
概念
-
表达式
- 表达式就是一个类似于数学公式的东西
比如:10+5
表达式一般仅仅用了计算一些结果,不会对程序产生实质性的影响
如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出
- 表达式就是一个类似于数学公式的东西
-
语句
- 在程序中语句一般需要完成某种功能,比如打印信息、获取信息、为变量赋值。。。
- 比如:
print()
a=10- 语句的执行一般会对程序产生一定的影响
在交互模式中不一定会输出语句的执行结果 - {表达式和语句也没有太大的区别}
- 语句的执行一般会对程序产生一定的影响
-
程序(program)
程序就是由一条一条的语句和一条一条的表达式构成的。 -
函数(function)
- 函数就是一种语句,函数专门用来完成特定的功能
- 函数长的形如:xxx()
- 函数的分类:
- 内置函数
由Python解释器提供的函数,可以在Python中直接使用
2. 自定义函数
由程序员自主的创建的函数
- 内置函数
传送门:python函数笔记
基本语法
-
在Python中严格区分大小写
-
Python中的每一行就是一条语句,每条语句以换行结束
-
Python中每一行语句不要过长(建议每行不要超过80个字符)
-
一条语句可以分多行编写,语句后边以
\
结尾 -
Python是缩进严格的语言,所以在Python中不要随便写缩进
-
在Pythont中使用:,# 来表示注释, # 后的内容都属于注释,注释的内容将会被解释器所忽略(‘’‘注释内容’‘’)
变量和赋值
-
什么是变量
-
一个实体的指代
-
查看变量的内存地址
id(x)
-
-
可重新赋值
-
-
为变量赋值
-
通过
=
来赋值x = 3
-
被重新赋值之后的值去哪了?
- 被系统回收了.
-
-
Python的常量
- python没有常量这个数据类型
- 程序员之间的约定: 如果这个变量的命名都是大写字母, 那么就视为一个常量
标识符
#标识符
'''
在Python中所有可以自主命名的内容都属于标识符
比如:变量名、函数名、类名
标识符必须遵循标识符的规范
1.标识符中可以含有字母、数字、_ ,但是不能使用数字开头
例子:a1_a1_1a
2.标识符不能是Python中的关键字和保留字
也不建议使用Python中的函数名作为标识符,因为这样会导致函数被覆盖
3.命名规范:
在Pythont中注意遵循两种命名规范:
下划线命名法
* 所有字母小写,单词之间使用分割
列子:max hello_world xxx_yyy_zzz
* 帕斯卡命名法(大驼峰命名法)
首字母大写,每个单词开头字母大写,其余字母小写
列子: HelloWorld XxxYyyZzz
'''
# 如果使用不符合标准的标识符,将会报错SyntaxError: invalid syntax
a = 15
xxx_yyy_zzz = 'hello word'
print(a) #15
print(xxx_yyy_zzz) #hello word
Python的六大基本类型
*强调基本的原因数据类型和数据结构指向的范围更加广泛, 不要产生错误的认知, 形成思维定式
-
通过
type()
函数来查看当前变量的数据类型 -
print(1 + True) print(bool(2)) print(type(1)) print(type(1.5)) print(type(True)) print(type('hello')) #类型转换四个函数int(),f1oat(),str(),bool() #int()可以用来将其他的对象转换为整型 a = True #调用int()来将a转换为整型 #int() 函数不会对原来的变量产生影响,他是对象转换为指定的类型并将其作为返回值返回 #如果希望修改原来的变量,则需要对变量进行重新赋值 #a = int(a) print('a =',a) print('a的类型是',type(a))
int
(整数)
int('1')
2. `float`(浮点数)
float('1.0')
a = 0.2
b = 0.1
c = a + b
print(c) #0.30000000000000004
# 对浮点数进行运算时,可能会得到一个不精确的结果
-
因为计算机内部只认识1和0, 所以浮点数强调的时小数的表现形式
string
(字符串, 字符序列)
str(2)
c = "dasd"'adsad'"Awdwa"
print(c)
#%s 表示占位符
d = "hello %s"%'word'
e = "%s hello %s"%("kangkang","jen")
y = f"{'kangkang'} hello {'jen'}"
print(d)
print(e)
print(y)
- 在有些语言中, 单个字符也是一个基本的数据类型(`Char`)
- 有序的
- 如何表示字符串
- `''`
- `""`
- `''' '''`
- `""" """`
- 相同的引号不能嵌套
- 转义字符
告诉python解释器, 我们当前要表示的是一个字符或者是特殊字符
- 通过`\`来转义
"2\""
"2\n" #\n 表示换行
boolean
(布尔值)
bool(2)
print(bool(0))
print(1 + True)
用来表示True
或者False
-
True
等价于1 -
False
等价于0bytes
(二进制序列)
二进制的表示形式
6. `None`(空)
-
有了
False
和0
为什么还要有None
因为
False
和0
有时候也代表了一种结果
Python的运算符
-
算术运算
-
+
-
-
-
*
乘法
-
/
除法
-
//
整除
-
%
取余数
-
**
x的y次幂
-
开方(没有提供直接的运算符)
x ** (1/2)
-
abs()
取绝对值
-
-
赋值运算
通过
=
赋值a = 1
-
比较运算
比较的是两个对象的字面值, 字面值暂时可以简单地理解为输出值
-
<
-
>
-
<=
-
>=
-
==
等于
-
!=
不等于
-
-
标识号比较运算
比较的是两个变量的内存地址
-
is
-
is not
-
赋值类型为
str
,int
的时候要考虑Python
常量池a = "test_1" b = "test_1" a is b >>> True a = '你好' b = '你好' a is b >>> False
-
-
成员检测运算
判断元素是否在当前序列当中
-
in
a = [1,2,3] 1 in a >>> True b = [1, 2] b in a >>> False
-
not in
-
-
布尔运算
判断当前语句的结果是
True
还是False
-
and
只有两边都是
True
才返回True
-
or
两边表达式有一个
True
返回的结果为True
-
短路
表达式A or 表达式B 当表达式A为True时, 表达式B就不会运行
-
-
逻辑取反
not
-
条件运算符(三元运算)
a = 20
b = 25
print('a大于b!!') if a > b else print('b大于a!!!')
man = a if a > b else b
print(man)
c = 40
#and 与
i = a if (a > b and a > c) else (b if b > c else c)
print(i)
-
位运算
二进制运算有兴趣的可以了解一下
~
^
>>
<<
&
|
Python运算符优先级
运算符 | 描述 |
---|---|
or | 布尔运算或 |
and | 布尔运算与 |
not | 布尔运算逻辑取反 |
in, not in, is, is not, <, !=, … | 比较运算, 成员检测运算, 标识号检测 |
+, - | 加法和减法 |
*, /, //, % | 乘法, 除法, 整除, 取余 |
+x, -x | 正负数 |
** | 幂 |
-
自定义优先级
如果不确定优先级, 出于可读性和避免未知的BUG, 我们都应该用()来自定义优先级
-
通过
()
(not b and c) or (d and e)
-
流程控制语句
-
条件判断语句
-
if
-
elif
-
else
a = 50 if a > 100: print("a 超过阈值") elif a == 50: print("a 只有阈值的一半") else: print("a 小于阈值") ''' if 条件表达式: 代码块 elif 条件表达式: 代码块 else: 代码块 '''
-
1.python代码块
代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
代码块就是一种为代码分组的机制
代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
-
input()
#input() 函数
#该函数用来获取用户输入
#input() 调用后,程序会立即暂停,等待用户输入
#用户输入完内容以后,点击回车程序才会继续向下执行
#用户输入完成以后,其所输入的的内容会以返回值得形式返回
###注意:input()的返回值是一个字符串
# input(' 参数 ') 可以设置一个字符串作为参数 用来提示
#a=input()
'''
a = input("请输入:")
print('用户输入的内容是:',a)
'''
age = int(input('请输入年龄:'))
if age >= 25:
print("可以结婚了")
elif age >= 18:
print('大小孩')
elif age <= 0:
print('ON')
-
循环语句
-
for
遍历一个可迭代对象(暂时理解为list), 会影响相同作用域当中的变量
l = [1, 2, 3, 4, 5, 6] e = 0 for e in l: print(e) print(f"final e value: {e}")
-
获取索引值和值
l = [1, 2, 3, 4, 5, 6] for i, e in enumerate(l): print(f"index: {i}, value: {e}")
-
-
while
循环一定要有逻辑判断语句来退出
while
循环while 判断语句: 表达式 while True: 判断语句 表达式
-
跳出循环
-
break
停止当前循环
-
continue
跳过当前的执行逻辑, 立即执行下一个循环语句单元;
-
pass
跳过当前条件判断中的执行语句, 后续语句继续执行;
-
-
Python的四大基本数据结构
-
list
(列表)-
什么是列表?
用来装载不同数据类型的数据集结构
-
列表的特点
- 有序的
- 可以装载任意数据类型
- 可以更改的
-
如何表示
list
-
通过
list()
新建一个列表list("hello world")
-
通过
[]
声明一个列表a = [1, 2, 3]
-
-
-
tuple
(元组)-
什么是元组?
可以简单地认为, 元组就是不可修改的列表, 常用来表示记录.
-
元组的特点?
- 有序的
- 可以装载任意数据类型
- 不可更改
-
如何表示
tuple
-
通过
tuple()
新建一个元组tuple("hello")
-
通过
(,)
来声明一个元组a = (1, 2, 3) #声明单个元素的元组, 要添加逗号 a = (1, )
-
-
-
dict
(字典)-
什么是字典?
字典也叫
hashtable
, 通过hash
(散列)函数将传入的key
值生成地址来查找value
key
->hash
函数 -> 返回了value
的地址 -> 通过地址返回value
值 -
字典的特点?
-
无序的
python3.6
是有序的, 无视这一点. -
字典中的
key
必须是可hash
的, 也就是不可更改的, 唯一的 -
可以更改的
-
-
如何表示字典
-
通过
dict()
来创建字典dict(a=2)
-
通过
{}
来声明一个字典a = {"a": 2}
-
-
-
set
(集合)-
什么是
set
set
其实是没有value
的字典 -
集合的特点
- 无序的
- 集合中的
key
必须是可hash
的 - 可以更改的
- 元素是唯一的
-
如何表示
set
-
通过
set()
来创建集合set([1,2,2])
-
通过
{}
来表示{1, 2, 3}
-
-