Python语言两大特性
动态语言 2. 强类型语言
Python是一门动态的,强类型的语言.
什么是动态语言?
1. 要了解什么是动态语言,要首先了解 "类型检查".
2. 类型检查 是验证类型约束的过程,编译器或解释器通常在编译阶段或运行阶段做类型检查.
(1) 类型检查就是查看"变量"和它们的"类型",然后判断表达式是否合理.
(2) 例如,不能拿一个string类型的变量除以浮点数变量
3. 如果类型检查发生在程序"运行阶段"(run time),那么它便是"动态类型语言"(dynamically typed languages). 常见的动态类型语言有:
(1) Python
(2) JavaScript
(3) PHP
4. 如果类型检查发生在"编译阶段"(compile time),那么它便是"静态类型语言"(statically typed languages),常见的静态类型语言有:
(1) Java
(2) C++
(3) golang
什么是强类型语言?
1. 强类型语言是指: 不管是在编译阶段还是运行阶段,一旦某种类型绑定到变量后,此变量便会持有此类型,并且不能通其他类型在计算表达式时,混合使用.
(1) 例如在Python中,数值和字符串是不能相加的
a=5
a = a + 's'
程序会抛出异常
(2) 常见的强类型语言: Python,Java
2. 与之对应的是弱类型语言,弱类型语言容易与其他类型混合计算.
(1) JS中可以支持下面操作(和Java的原理不同,Java是强类型语言)
var a = 5
a = a + 's' // string和int结合自动转换为string
(2) 弱类型语言的代表: PHP,JavaScript
3. 强类型语言和弱类型语言 (注意是偏向,不是一定)
(1) 弱类型语言偏向于容忍隐式类型转换
(2) 强类型语言偏向于不容忍隐式类型转换
四大基本语法
1.命名规则 2.缩进原则 3.特殊关键字 4.特殊运算符
命名规则
1. Python的变量命名规则主要包括两条:
(1) 允许包括英文,数字已经下划线_,不能以数字开头
(2) 名称区分大小写
2. 特别说明"下划线"开头的变量是有特殊意义的:
(1) 类变量(类的变量或方法) 若以单下划线_ 开头,代表不能直接被访问,类似C#的受保护型变量(protected),表示不能通过 import module_name 而导入. 但是其他类是可以访问的,注意理解protected
(2) 类变量(类的变量或方法) 若以双下划线 __ 开头,代表为类的私有成员,不能被导入和被其他类变量访问.
(3) 以双下划线开头和双下划线结尾的变量是Python里的专用标识,有特殊的身份. 如 __init__, __add__
3. Python变量命名习惯一般遵守蛇形命名法(snake case):
(1) 一般变量命名: book_id,book_store_count
(2) 类名首字符为大写,如Python内置模块collections.abc中的Iterable类,我们自定义的Book类等
(3) 模块名是全部小写(对比Java的包名)
(4) 方法名: get_store_count()
(5) 常量全部大写: M_PI,MAX_VEHICLE_SPEED
4. 注意: Python的命名方式与Java不能
(1) Python => snake case 蛇形命名法
(2) Java => camel case 驼峰命名法
缩进原则
1. Python最具特色的地方就是用缩进代替了Java,C++中的大括号{},缩进的层级结构变式代码的逻辑层次.
2. Python的缩进一般定义为4个字符.
3. 缩进格式,行间空行数,变量和扽号空格等Python编码规范参考PEP8
(1) autopep8包遵循PEP8的所有规范,安装此包,做好相关配置,便可自动实现PEP8定制的编码规范
(2) autopep8 --in-place --aggressive --aggressive file.py (在PyCharm的可以进行设置)
特殊关键字
1. Python有35个关键字:
import keyword
print(keyword.kwlist) # keyword.kwlist 关键字列表
自定义的变量名不能与它们重复
2. 常用且不同于其他常用语言C++和Java的关键字,如:
(1) True和False用于表示值的真假,在Java中是true和false
(2) 逻辑反操作, Python使用 not, Java是 !
(3) None表示空值,Java使用null
(4) Pthon两个条件同时满足使用 and, Java使用 &&
(5) 两者满足其一,Python使用or,Java使用 ||
(6) Python使用elif,Java是 else if
3. 其他比较特殊的关键,如:
(1) del 用于删除可迭代对象中某个元素
(2) def 用于定义函数
(3) 带 yield 用于定义生成器(generator)函数
(4) global 和 nonlocal 一种应用是Python函数式编程的闭包场景
(5) pass 一种应用式定义接口,也是Python语言特有的一个关键字
特殊运算符
1. Python常用的运算符与其他语言一致,这里主要讲几个特殊的
2. // , ** ,@,:=
(1) // 用于两个数值相除且向下取整,与Python的math.floor()类似
(2) ** 幂运算
(3) @ 装饰器语法
(4) := 海象运算符
3. := 海象运算符, 这个是Python3.8才被支持的 .....
4. Python比较运算还支持链式比较,应用起来更加方便
i = 3
print(1 < i < 3) # False
print(1 < i <=3) # True
小结
1. 首先认识了Python两大特征:
(1) 动态语言: 动态指的是代码运行时才被编译器一行一行翻译执行
(2) 强类型: 强类型指的是办一个类型后便不能修改,不能与其他类型混用
2. Python的四大基本语法:
(1) 命名规则
(2) 缩进原则
(3) 特殊关键字
(4) 特殊运算符