Python碎碎念(1)——两大特性和四大基本语法

两大特性和四大基本语法

Python语言越来越受欢迎,它有许许多多的应用场景,不仅可以做GUI开发、Web开发,还可进行数据预处理、数据分析等,随着数据科学热潮的掀起,Python更是进行数据挖掘、机器学习、深度学习、人工智能等的首选语言。

Python之所以这么受欢迎,其一是得益于它语言语法简单,所以进行开发的效率得到了提高,缩短了工作人员的开发时间;其二是Python是一门免费、开源语言,Python社区有许许多多的代码贡献者,使得其第三方包种类繁多、涵盖不同应用场景的功能所需。

从今天起,我们将一起就Python来碎碎念一番。

两大特性

动态语言

Python是一门动态语言,那么何为动态语言?让我们来看看维基百科的解释:

动态编程语言是高级编程语言的一个类别,在计算机科学领域已被广泛应用。它
是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被
引进,已有的函数可以被删除或是其他结构上的变化。
——维基百科

其上所说:在运行时可以改变其结构的语言,说的就是“类型检查”,那么什么是类型检查?

类型检查就是一个验证类型约束的过程,编译器或者解释器通常在以下两个阶段进行类型检查:编译阶段或运行阶段。类型检查就是检查一个“变量”和其“类型”,进而判断表达式是否合理。

动态语言(弱类型语言)是运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。常见的动态类型语言有:

  • Python
  • JavaScript
  • PHP

静态语言(强类型语言)是编译时变量的数据类型就可以确定的语言,大多数静态语言要求在使用变量之前必须声明数据类型。

常见的静态类型语言有:

  • C
  • C++
  • Java

强类型语言

强类型语言是指:一旦一个变量被指定了某个数据类型,此变量便会持有此类型,如果不经过强制转换,那么它就永远是这种数据类型,不能同其他类型在计算表达式时混合使用。

如下例子:

In [1]: testnum = 8

In [2]: testnum = testnum + 't'

运行时会抛出TypeError异常如下:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

错误提示说明得很清楚:不支持int类型的变量和str类型的变量相加。

常见的强类型语言有:

  • Python
  • Java
  • Scala

与强类型语言对应的是弱类型语言。

弱类型语言是数据类型可以被忽略的语言。它与强类型语言相反,其变量的类型是由其上下文决定的,这使得在弱类型语言中,一个变量容易与其他类型的变量混合计算。弱类型语言的代表JavaScript支持如下操作:

var testdata = 5

testdata = testdata + 'xiaoyang'

//str和int结合自动转化为str

常见的弱类型语言有:

  • C
  • C++
  • PHP
  • JavaScript

关于语言的静态/动态、强类型/弱类型,我们可以参考下图:

Python碎碎念(1)——两大特性和四大基本语法_第1张图片

四大基本语法

命名规则

Python的命名规则主要包括以下两条:

  • 不能以数字开头,允许包括数字、字母及下划线 _
  • 名称区分大小写

而在Python中,以下划线 _ 开头的变量是有特殊意义的,其意义如下:

  • 类变量若以单个下划线 _ 开头,代表该变量不能被直接访问,类似于Java的protected类型的变量。其不能通过 import module_name 进行导入。
  • 类变量若以两个下划线 __ 开头,表示该变量为类的私有成员,不能被导入或被其他类变量直接访问。
  • 以两个下划线开头并以两个下划线结尾的变量是Python里的专用标识,有特殊的身份。

Python的变量命名习惯一般遵守蛇形命名法,及单词之间以 _ 连接:

  • 一般变量名:general_variable,book_id,book_count;
  • 自定义函数和类方法名同上;
  • 类名首字符一般为大写。

除了以上所说,其他特殊变量,会全部使用大写进行命名,如:ALL_AMOUNT、FIXED_VALUE。

缩进原则

这是Python语言的一大特色,以缩进代替 { } ,缩进的层级结构表示代码的逻辑层次(一般缩进4个字符),不以 ; 结尾。

如下代码:

def test():
    i = 0
    while i < 3:
        print(i)
        i += 1

相当于C的如下写法:

void test(){
    int i = 0;
    while(i < 3){
        printf("%d\n", i);
        i++;
    }
}

如上例子,C语言以 { } 来区分代码的逻辑层次,而在Python中则用缩进来代替,缩进长度相同的代码所在的逻辑层次相同,Python语言在执行过程中严格检查缩进。

关键字

Python有如下33个关键字:

False	None	True	 	 	 
and	as	assert	break	class	continue
def	del	elif	else	except	finally
for	from	global	if	import	in
is	lambda	nonlocal	not	or	pass
raise	return	try	while	with	yield

以及Python3.7之后新增的用于异步编程的两个关键字:async和await,自定义变量的变量名不能与它们重复。

常用的关键字如下:

  • True和False用于表示逻辑的真和假;
  • not用于逻辑取反;
  • None表示空值,相当于Java的null;
  • and表示逻辑与;
  • or表示逻辑或;
  • elif相当于Java的else if;
  • del用于删除对象或可迭代对象中的某个元素;
  • 带yield用于定义生成器函数;
  • global和nonlocal的一个应用场景是Python函数式编程中处理闭包的场景;
  • pass表示什么都不干,一种应用是定义接口,这是Python语言中特有的一个关键字。

这些关键字之后我们还会接触到,进行详细讨论。

运算符

运算符用于对变量和值执行操作。

Python 在以下组中划分运算符:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 身份运算符
  • 成员运算符
  • 位运算符
算术运算符

算术运算符与数值一起使用来执行常见的数学运算。

运算符 名称 实例
+ x + y
- x - y
* x * y
/ x / y
% 取模 x % y
** x ** y
// 地板除(取整除) x // y
赋值运算符

赋值运算符用于为变量赋值。

运算符 实例 等同于
= x = 5 x = 5
+= x += 5 x = x + 5
-= x -= 5 x = x - 5
*= x *= 5 x = x * 5
/= x /= 5 x = x / 5
%= x %= 5 x = x % 5
//= x //= 5 x = x // 5
**= x **= 5 x = x ** 5
&= x &= 5 x = x & 5
|= x |= 5 x = x | 5
^= x ^= 5 x = x ^ 5
>>= x >>= 5 x = x >> 5
<<= x <<= 5 x = x << 5
比较运算符

比较运算符用于比较两个值.

运算符 名称 实例
== 等于 x == y
!= 不等于 x != y
> 大于 x > y
< 小于 x < y
>= 大于或等于 x >= y
<= 小于或等于 x <= y
逻辑运算符

逻辑运算符用于组合条件语句。

运算符 描述 实例
and 如果两个语句都为真,则返回 True。 x > 3 and x < 10
or 如果其中一个语句为真,则返回 True。 x > 3 or x < 4
not 反转结果,如果结果为 true,则返回 False not(x > 3 and x < 10)
身份运算符

身份运算符用于比较对象,不是比较它们是否相等,但如果它们实际上是同一个对象,则具有相同的内存位置 。

运算符 描述 实例
is 如果两个变量是同一个对象,则返回 true。 x is y
is not 如果两个变量不是同一个对象,则返回 true。 x is not y
成员运算符

成员资格运算符用于测试序列是否在对象中出现。

运算符 描述 实例
in 如果对象中存在具有指定值的序列,则返回 True。 x in y
not in 如果对象中不存在具有指定值的序列,则返回 True。 x not in y
位运算符

位运算符用于比较(二进制)数字。

运算符 描述 实例
& AND 如果两个位均为 1,则将每个位设为 1。
| OR 如果两位中的一位为 1,则将每个位设为 1。
^ XOR 如果两个位中只有一位为 1,则将每个位设为 1。
~ NOT 反转所有位。
<< Zero fill left shift 通过从右侧推入零来向左移动,推掉最左边的位。
>> Signed right shift 通过从左侧推入最左边的位的副本向右移动,推掉最右边的位。

另外,在2019年发布的Python3.8版本里面,加入了对运算符 := 的支持,被形象地称为“海象运算符”,其用法如下:

n = len(a)
if n > 10:
    print(f"{n}大于10")

如果使用“海象运算符”,上面代码可以更为精简:

if ( n := len(a) ) > 10:
    print(f"{n}大于10")

Python还支持链式比较,在实际应用中使得比较更为方便,请看如下例子:

i = 4
print( 1 < i < 3 ) # False
print( 3 < i < 5 ) # True

除此之外,还有用于实现装饰器功能的运算符@,在此处先不做介绍。

小结

本篇首先介绍了Python的两大特征:

  • 动态语言
  • 强类型语言

以及四大基本语法:命名规则、缩进原则、特殊关键字、运算符等。

附录

本篇是一篇学习笔记
参考:
GitChat专栏《Python全栈60天精通之路》
W3school

你可能感兴趣的:(Python碎碎念(1)——两大特性和四大基本语法)