Python语言之语法基础


Python语言之语法基础

前言

人生苦短,我用Python。

一、基本语法

注释

  • Python中的单行注释以#开头!

  • 多行注释可以使用三引号作为开头和结束符号

  • 中文编码注释,在文件开头加上中文声明注释,用以指定源码文件的编码格式(coding:gbk/utf-8)

行与缩进

python最具特色的就是使用缩进来表示代码块
并不强制要求缩进4个空格,但要求缩进相同

if True:
	print ("True")
else:
	print ("False")
	print ("False")

语句换行

1.Python 通常是一行写完一条语句,但如果语句很长,我们需要换行,这时可以使用圆括号来实现。

s=("Python是一种面向对象、解释型计算机程序设计语言,"
        "由Guido van Rossum于1989年底发明。"
        "第一个公开发行版发行于1991年,"
        "源代码同样遵循 GPL(GNU General Public License)协议。")

2.对于字符串或者字符类型,还可使用三引号来实现。

3.对于代码来说,可使用反斜杠\来实现。

注:反斜杠后不能用空格或者其他符号

a = 1
b = 2
c = a +\
b
# 等同于c = a + b
print(c)

4.需要注意的是,在 [](列表), {}(字典), 或 ()(元组) 中的语句,不需要使用圆括号进行换行。

total = ['item_one', 'item_two', 'item_three',
        'item_four', 'item_five']

二、变量和数据类型

什么是变量

Python中的变量用来存储数据,变量可以理解为带标签的篮子,你把需要的数据放进去,其类型和值在赋值的那一刻被初始化。

注:变量不用声明类型,直接赋值使用。

例:

num1 = 100
num2 = 87
result = num1 + num2

变量由三部分组成:

  • 标识:表示对象所存储的内存地址。

  • 类型:表示对象的数据类型。

  • 值:表示对象所存储的具体数据。

变量的定义与使用:

当变量被多次赋值之后,变量名会指向新的空间。

例:

name= '罗mio'
print(name)
name= '朱律叶'
print(name)

数据类型:

  • 数字类型:整型、浮点、复数、布尔类型
  • 布尔类型(bool)
  • 字符串类型(str)
  • 列表类型
  • 元组类型
  • 字典类型
  • 集合

三、标识符和关键字

标识符

若希望在程序中表示一些事物,需要开发人员自定义一些符号和名称,这些符号和名称叫做标识符。

  • 标识符由字母、下划线和数字组成,且数字不能开头。

  • Python中的标识符是区分大小写的。

  • python中的标识符不能使用关键字 。

注:关键字不能用作标识符,在系统编译时会引起歧义。

例:

test = 1
test_1 = Test()
_test1 = 1

关键字

关键字指的是具有特殊功能的标识符。

>>> help()               # 进入帮助系统
help> keywords       # 查看所有的关键字列表
help> return             # 查看return这个关键字的说明
help> quit                # 退出帮助系统

四、简单数值类型

整型

整数类型(int)简称整型,它用于表示整数。

  • 二进制:0b10100(以0b开头,bin()转换)
  • 八进制: 0o10111(以0o开头,oct()转换)
  • 十进制: 64(int()转换)
  • 十六进制: 0x14 (以0x开头,hex()转换)

浮点型

  • 浮点型(Float)用于表示实数。
  • 浮点型字面值可以用十进制或科学计数法表示。

<实数>E或者e<整数>

E或e表示基是10,后面的整数表示指数,指数的正负使用+或-表示。

Python的浮点型遵循的是IEEE754双精度标准,每个浮点数占8个字节,能表示的数的范围是1.8e-308~1.8e+308 (64位)

布尔类型

  • 布尔型其实是整型的子类型。
  • 布尔型数据只有两个取值:True和False,分别对应整型的1和0。

以下对象的布尔值都是False:

  • None、False(布尔型)、0(整型0)、0x0(16进制0)、0.0(浮点型0)、0.0+0.0j(复数0)
  • “ ”(空字符串)、[ ](空列表)、( )(空元组)、{ }(空字典)

复数类型

复数类型,用于表示数学中的复数,例如,5+3j。

  • 复数由实数部分和虚数部分构成,表示为:real + imag j
  • 复数的实数real和虚数imag都是浮点型

数字类型转换

查看变量类型

使用type()函数

a = 10
print(type(a))
输出:

五、运算符

算术运算符

 +       加:两个对象相加
 -       减:得到负数或一个数减去另一个数
 *       乘:两个数相乘或是返回一个被重复若干次的字符串
 /       除:x除以y
 %       取余:返回除法的余数
 **      幂:返回x的y次幂
 //      取整除:返回商的整数部分

赋值运算符

赋值运算符只有一个,即=,它的作用是把等号右边的值赋给左边。例如:x=1

  • 为多个变量赋同一个值:x=y=z=1

  • 将多个值赋值给多个变量 a, b = 1, 2

复合赋值运算符

 +=     加法赋值运算符         c+=a等效于c=c+a 
 -=     减法赋值运算符         c-=a等效于c=c-a 
 *=     乘法赋值运算符         c*=a等效于c=c*a 
 /=     除法赋值运算符         c/=a等效于c=c/a 
 %=     取模赋值运算符         c%=a等效于c=c%a 
 **=    幂赋值运算符          c**=a等效于c=c**a 
 //=    取整除赋值运算符       c//=a等效于c=c//a

比较运算符

 ==       检查两个操作数的值是否相等
 !=       检查两个操作数的值是否不等
 >        检查左操作数的值是否大于右操作数的值
 <        检查左操作数的值是都小于右操作数的值
 >=       检查左操作数的值是否大于或等于右操作数的值
 <=       检查左操作数的值是否小于或等于右操作数的值

逻辑运算符

and 	x and y       布尔“与”,如果x为False,x and y返回False,否则它返回y的计算值
or 	x or y        布尔“或”,如果x为True,它返回True,否则返回y的计算值
not 	not x         布尔“非”,如果x为True,返回False,如果x为False,它返回True

成员运算符

in         如果在指定的序列中找到值返回 True,否则返回 False。
           x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in     如果在指定的序列中没有找到值返回 True,否则返回 False。
           x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

六、位运算

按位左移和按位右移

按位左移(<<)指的是二进位全部左移n位,高位丢弃,低位补0 。

按位右移(>>)指的是将二进位全部右移n位,移出的位丢弃,移进的位补符号位。按位右移的符号位保持不变。

按位与、按位或和按位异或

按位与(&)

指的是参与运算的两个数各对应的二进位进行“与”的操作。

只有对应的两个二进位都是1时,结果位才为1,否则结果位为0.

1001
0011
0001

按位或(|)

指的是参与运算的两个数各对应的二进位进行“或”的操作。

只要对应的两个二进位有一个为1时,结果位就为1

1000
0100
1100

按位异或

就是将参与运算的两个数对应的二进制位进行比较,如果一个位为1,另一个位为0,则结果为就为1,否则,结果位为0。

1000
0100
1100

按位取反

  • 按位取反就是将二进制的每一位进行取反;
  • 0取反为1,1取反为0
  • 但是,在计算机系统中,数值一律用补码来表示和存储

计算机中原码补码计算规则:

计算机存储n位,左边最高位为符号位,1为负,0为正;
所有数值在计算机中以补码形式存储
正数的原码与补码相同
负数的补码为原码按位取反再+1(符号位不变)
负数的原码为补码-1再按位取反
原码补码转换过程中,符号位不变

按位取反计算方法:~x = -(x+1)

取反符号计算流程:
① 无论给的正数、负数,先求该数的原码。(因为下一步的取反是对原码取反)
② 对①得到原码取反,包括符号位也取反(因为要执行取反运算符)
③ 对②得到的结果求补码。(第②步得到取反后的值,要在计算机内以补码存储)
④ 把③的结果转换为有正负号的十进制值。

源码求补码:
(1)如果原码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果原码的符号位为“1”,表示是一个负数,求补码的操作是:符号位为1,其余各位取反,然后再整个数加1。

补码求原码:
(1)如果该补码的符号位为“0”,表示是一个正数,所以原码补码是同一个。
(2)如果该补码的符号位为“1”,表示是一个负数,求原码的操作是:
方法1(求一次补码即得到原码):符号位为1,其余各位取反,然后再整个数加1。
方法2(减1求反):符号位为1,整个数减1,再取反(符号位不取反)。

七、运算符优先级

 **                             指数(最高优先级)
 ~,+,-                          按位翻转,一元加号和减号
                             (最后两个的方法名为+@ 和 -@,例如:+5,-5 正5,负5)
 *,/,%,//                       乘,除,取模和取整数
 +,-                            二元加号和减号
 >>,<<                          右移,左移运算符
 &                              按位与
 |,^                            按位或,按位异或
 <=,>=,==,!=                    比较运算符
 =,%=,/=,//=,-=,+=,*=,**=       赋值运算符
 is,is not                      身份运算符
 in,not in                      成员运算符
 not,or,and                     逻辑运算符

输入输出

输入

给变量赋值(结果为字符串):

a = input()

print(type(a))# 输出a的类型

带提示文字:

a = input('请输入:')

输出

print()函数输出的内容可以是数字、字符串或含有运算符的表达式。

直接输出:

print('hello world') # 输出字符串需要加引号

print(1+1) # 输出表达式

格式化输出:

print('{0} 和 {1}'.format('Google', 'Runoob'))

保留小数位数:

print('常量 PI 的值近似为 {0:.3f}。'.format(3.141592653))

print('这个浮点数是%.1f' % 3.14159) # 取1位小数

输出参数:

a,b = 0,8

print(a,b)

f-string输出

python3.6之后的版本引入了一种新的字符串格式化方式:f-tring格式化字符串。从%s格式化到format格式化再到f-string格式化,格式化的方式越来越直观,f-string的效率也较前两个高一些,使用起来也比前两个简单一些。

例:

a = 1
print(f'test print:{a}')
# 输出结果:test print:1

结尾

生活比电影狠多了,从来不给弱者安排大逆转的情节。