当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件
要运行代码,就需要Python解释器去执行.py文件
CPython用>>>作为提示符,而IPython用In [序号]:作为提示符
在Python交互模式下输入exit()并回车,就退出了Python交互模式,并回到命令行模式
如果要让Python打印出指定的文字,可以用print()函数,然后把希望打印的文字用单引号或者双引号括起来,但不能混用单引号和双引号
这种用单引号或者双引号括起来的文本在程序中叫字符串
可以执行python hello.py运行一个.py文件
但必须先把当前目录切换(cd)到hello.py所在的目录下才能正常执行
如果遇到SyntaxError,表示输入的Python代码有语法错误,最常见的一种语法错误是使用了中文标点,例如使用了中文括号或者使用了中文引号
Word保存的不是纯文本文件,而记事本会自作聪明地在文件开始的地方加上几个特殊字符(UTF-8 BOM)
文件名应使用小写英文字母、数字和下划线的组合
直接输入python进入交互模式,相当于启动了Python解释器
用Python开发程序,完全可以一边在文本编辑器里写代码,一边开一个交互式命令窗口,在写代码的过程中,把部分代码粘到命令行去验证,事半功倍
用print()在括号中加上字符串,就可以向屏幕上输出指定的文字
print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出
print()也可以打印整数,或者计算结果
Python提供了一个input(),可以让用户输入字符串,并存放到一个变量里
在计算机程序中,变量不仅可以为整数或浮点数,还可以是字符串
input()可以让你显示一个字符串来提示用户
name = input('please input your name: ')
print('Hello', name)
编译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行
Python的语法比较简单,采用缩进方式
# print absolute value of an integer:
a = 100
if a >= 0:
print(a)
else:
print(-a)
以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释
其他每一行都是一个语句
当语句以冒号:结尾时,缩进的语句视为代码块
缩进有利有弊
好处是强迫你写出格式化的代码,但没有规定缩进是几个空格还是Tab。按照约定俗成的惯例,应该始终坚持使用4个空格的缩进
缩进的另一个好处是强迫你写出缩进较少的代码,你会倾向于把一段很长的代码拆分成若干函数,从而得到缩进较少的代码
缩进的坏处就是“复制-粘贴”功能失效了,这是最坑爹的地方
当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确
此外,IDE很难像格式化Java代码那样格式化Python代码
最后,请务必注意,Python程序是大小写敏感的,如果写错了大小写,程序会报错
Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩进
在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格
在Python中,能够直接处理的数据类型有以下
Python可以处理任意大小的整数,当然包括负整数
计算机由于使用二进制,所以有时候用十六进制表示整数比较方便
十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等
对于很大的数,例如10000000000,很难数清楚0的个数。Python允许在数字中间以_分隔,因此,写成10_000_000_000和10000000000是完全一样的。十六进制数也可以写成0xa1b2_c3d4
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的
浮点数可以用数学写法,如1.23,3.14,-9.01,等等
但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等
整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差
如果字符串内部既包含’又包含"怎么办?可以用转义字符\来标识
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符
为了简化,Python允许用’‘’…‘’'的格式表示多行内容
在交互式命令行内输入多行内容时,提示符由>>>变为…,提示你可以接着上一行输入,注意…是提示符,不是代码的一部分
在Python中,可以直接用True、False表示布尔值(请注意大小写),也可以通过布尔运算计算出来
布尔值可以用and、or和not运算
True and True
True
True and False
False
False and False
False
5 > 3 and 3 > 1
True
True or True
True
True or False
True
False or False
False
not True
False
not False
True
if age >= 18:
print('adult')
else:
print('teenager')
布尔值经常用在条件判断中
空值是Python里一个特殊的值,用None表示
Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型
变量名必须是大小写英文、数字和_的组合,且不能用数字开头
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言
静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据
a = 'ABC'
b = a
a = 'XYZ'
print(b) # ABC
所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量
在Python中,有两种除法,一种除法是/,计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数
还有一种除法是//,称为地板除,两个整数的除法仍然是整数
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理
最早的计算机在设计时采用8个比特(bit)作为一个字节(byte)
所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255)
如果要表示更大的整数,就必须用更多的字节
比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295
由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122
但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去
全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突
因此,Unicode字符集应运而生
但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算
所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码
在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
要计算str包含多少个字符,可以用len()函数
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码
在Python中,采用的格式化方式和C语言是一致的,用%实现
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Zane', 10000000)
'Hi, Zane, you have $10000000.'
%运算符就是用来格式化字符串的
在字符串内部,%s表示用字符串替换,%d表示用整数替换,%f是浮点数替换,%x是十六进制整数替换
有几个%占位符,后面就跟几个变量或者值,顺序要对应好
如果只有一个%,括号可以省略
如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串