Python语言的概述
Pyhthon 是 蟒蛇的意思。
python语言的拥有者是 Python Software Foundation(PSF)
RSF是一个非盈利组织,致力于保护Python语言开放、开源和发展。
可以说:
Python语言是一个由编程牛人领导设计开发的编程语言
Python语言是一个有开放、开源精神的编程语言
从应用上讲,Python语言应用于火星探测、搜索引擎、引力波等众多领域
python的环境搭建
在ubuntu里面内置了python的环境,可以在终端中输入命令python2来进入python2的环境,输入python3来进入python3的运行环境。很是方便。
至于window版本,以后再补充。
第一个Python程序
学习编程少不了helloWorld!
所以开始吧!
有三种方式运行Python,第一种方式直接在终端上操作,第二种方式用文件方式执行,第三种用ide集成开发环境运行。
第一种
在终端输入python3
写下如下程序:
myString = 'hello world!'
print(myString)
第二种
在某一个文件中,书写程序。并命名后缀名为.py
打开终端,见图
安装插件
python 都是通过pip命令进行安装的,所以首先安装pip
在终端中输入sudo apt install python-pip安装pip
安装第一个插件
安装科学计算包numpy
只需输入命令pip install numpy就可以了,方便吧。
它提示pip需要更新,所以只要输入pip install update pip即可更新。
另一种安装插件的方法
使用python开发平台(继承软件包)类似于ide,如anaconda
注释
使用#来进行注释单行。
使用\来进行续行,
无须续行符的情况
1.括号内() [] {}
2. `'''`三引号下包括的字符串也可以跨行书写。
缩进
在python中,缩进相当重要,他代表着不同的语句块。常用四个空格
python基础
变量
变量用来标识一个对象或者引用一个对象。和其他语言相同。使用变量名,大小写敏感。
常量
python中是没有常量一说的,任何的量都是可以变得。但是我们可以通过一些方法来实现。如创建一个常量类。
关于变量的命名准许你一定的规则:
必须是字母、数字、下划线和汉字等字符组合。
如:python123 python是一门好语言
大小写敏感,开头不能是数字,同时不能与python保留字相同。驼峰式命名法。
【注】True和False是首字母大写的,和Java语言不同。
运算符
运算符在运算符有很多种类型。
算数运算符
+ - * / % **(乘方) //(取整)
位运算符
~(取反) &(与) |或 ^异或 <>右移
比较运算符
< > <= >= == !=
逻辑运算符
not and or
赋值
用=来赋值。
不需要显示的来声明类型,为什么呢?因为python是一种动态的强类型语言。根据值来确定类型。
和其他语言不同的是,python是通过引用的方式来实现赋值。python中所有的赋值都是将一个引用指向相应的内存单元。
增量赋值
如:*= += /= *= %= **= <<= >>= &= |= ^=
他们的实际就是 x += 1等价于 x = x +1
链式赋值
可以使用x = y = 1这样的方式进行赋值,从右向左。
多重赋值
x,y = 3,4这个,运算符,在python中代表着一种元组的数据结构,为了更加清晰,建议加上括号(x,y)=(3,4)
介于python中不同于其他语言的赋值方式,可以使用下面的不同赋值形式来进行两个元素的互换:x,y = y,x当然应该写成(x,y)=(y,x)
更加细致的解释后续再说
数据类型
python是一种动态的强类型语言,分为数字类型(整型、浮点型)布尔类型
Numbers类型
Numbers类型分为四种基本类型int long float complex
int
对于int而言,在python2.2以后的版本,将他扩展到了和计算机内存有关的很大的一个数,不像其他语言会溢出。所以对于int和long已没有本质的区别。
也就是说 在32位机器上面,int的值范围是:2^31 -- 2^31-1
在64位机器上面,int的范围是:2^63 -- 2^63-1
这个数字可是相当大了。
float
对于float类型也就是常说的实数,如5.33
同样float类型可以用科学计数法表示。
在python输入1.2e-2则会输出:
complex
complex是复数形式。复数分为实部和虚部,虚部必须有j
复数类型,有很多方法。
可以使用复数.real获取实数部分
使用复数.imag获取虚数部分
使用复数.conjugate获取它的共轭复数。
序列类型
序列类型可以分为字符串(String)、列表、元祖
String类型
可以使用' " '''来包裹String,字符串是不可变类型。可以使用[]运算符来进行元素的获取;提供递增索引和递减索引
也就是说正向 0 , 1 , ...
反向: -1 , -2 ,...
关于字符串的操作有切片:
使用[M:N]命令,即可取出M-N的字符,包左不包右。包括N
列表
使用[]表示,中间的元素用,分离,英文为List,可变类型
通过保留字in,来查询一个元素是否在列表中。
元组
“圆”组,“圆”组,必须用圆括号啦,,,()它是不可变类型。
映射类型
用{}表示,里面是一些键值对,s = {'hello':'world'}
获取值通过s['hello']同样是[]操作符。
Python的变量管理
首先每个对象在创建的时候都会有一个身份id,这个id可以使用id()函数来查看.
对于float类型变量来说,它存储的方式就和我们之前说的一样,每创建一个变量就将其指向一个地址.
而为了使运行更加高效,针对于小整数(并无确切范围)和字符串是不可变得,也就是说,只会为相同的数据创建一次.
可以说明一切
对于一些较大的整数还是会按正常方式创建
函数
函数分为内建函数和非内建函数,内建函数可以通过使用命令`dir(__builtins__)`来进行列出.
而非内建函数则需要导入相应的模块.
一些函数
print函数
print(变量/字符串)
输出语句
【注】在Python2中,语法和python3有所不同,需要python + 输出的内容,如上面的helloworld程序,在python2中需要这样写:print myString
格式化print函数,有些时候我们需要按照一定的格式向外输出语句,现在就需要格式化了。
print("转换后的温度值为{:.2f}C".format(C))
上面的{}表示槽,后续变量会填充在槽中,{:.2f}表示将变量C填充到这个位置时取小数点后两位。如C为12.3456,小数点后两位是12.35,存在四舍五入。
round函数
round函数方法返回浮点数的整数值,注意是整数值。具体的规则看下面。
在python3中,有一个小坑,就是round()并不是真正的四舍五入.如图
而可以这样的总结为:在奇数的时候,是四舍五入,在偶数的时候是五舍六入.
input函数
input('执行后输出的提示')
返回的是数据类型是str,所以有时需要进行类型转换,int(),float()这样的函数。也可以通过eval()把他当成有效的python表达式来求值并返回计算结果。
eval函数
去掉参数最外侧引号并执行余下语句的函数。评估函数。
模块
所谓模块,就是一个.py文件.
在物理上的组织方式我们称为文件.
而在逻辑上的组织方式我们就称为模块.
这样说来这个就是说法不同而已.
包
所谓的包,就是有层次的文件目录结构.
如下:
AAA/
__int__.py
bbb.py
CCC/
__int__.py
c1.py
...
DDD/
__int__.py
...
EEE/
以上就是一个一个目录结构,如果我们要导入具体的模块的话,如c1的话,就需要如下命令:
>>>import AAA.CCC.c1
>>>AAA.CCC.c1.func1(123)//通过import导入的,我们还需要写前面的一大堆
>>>from AAA.CCC.c1 import func1
>>>func1(123)//这个就可以直接写函数
如何导入模块呢?
有以下几种方式:
import 包名.类名
import 包名.类名,包名.类名
from 包名.类名 import 具体的属性和函数
用import和from import有什么区别呢?
import:导入包,使用时要用包.属性和方法来使用
from import:将包中的某个属性和方法导入,直接用方法和属性直接使用。
还有一个不同的地方在于,from import 因为是直接导的方法和属性,这就存在着重名的问题,如果程序很大 ,那么重名的就很难受,所以from import 适用于小型代码量。
语句
分支语句
if : elif : else :,来表示条件判断分支语句。
循环语句
for循环
for 变量 in 可迭代对象:
被执行的语句
可迭代对象包括:String List Tuple Dictionary File
【注意】for j in range(10)类似这种的,在跳出循环,j不会像其他高级语言一样跳出之后再+1。
Range函数也生成一个可迭代的对象。
例如:
for i in range(5)
print(i)
输出:
0
1
2
3
4
range(N)函数,产生循环计数序列的
range(M,N):产生M到N-1的整数序列。
range(M,N,Step):步长
当缺省step时,默认值为1,
缺省start和step 默认值0 和 1
end不能缺省。
range(5): 0,1,2,3,4 产生0到N-1的整数序列,共N个
range()生成的是一个range对象,类似于一个生成器generator,可迭代。
可以用在列表解析和生成器表达式中,具体如下:
列表解析
>>> [i for i in range(10)]
[0,1,2,3,4,5,6,7,8,9]
>>> [i + 1 for i in range(10) if i%2 == 0 ]
[1,3,5,7.9]
生成器表达式
>>> (i+1 for i in range(10) if i % 2 == 0)
at 0x00000100392405900> #生成一个生成器对象而不是列表
一般在数据量大的时候用生成器表达式,在数据量小的时候用列表解析。
while循环
while 条件:
循环语句
continue break 和else
break:跳出当前循环
continue:跳出本次循环
else:如果循环代码从break出终止,跳出循环
如果正常结束循环,则执行else中的代码
如:
from math import sqrt
num = int(input("Please enter a number:"))
j = 2
while j <= int(sqrt(num)):
if num% j == 0:
print('{:d} is not prime'.format(num))
break
j += 1
else:
print('{:d} is a prime'.format(num))
自定义函数
def 函数名(参数):
文档字符串'apply operation + to argument'
函数体
通过print fn.__doc__来获取文档字符串
默认参数
默认参数可以按照以下给出:
def f(x,y=True):
...
...
这样在调用的时候,如果不给出默认参数就会直接传入默认参数。
如调用f(20)其实等同于`f(20,True)
【注】不可以将默认参数放在其他参数的前面。结合前面的例子:如
def f(x = True,y):
...
如果以上可行的话,调用f(False)是将False传给哪一个呢?
关键字参数
关键字参数指的是,在调用函数的时候,可以自己指定参数。如
调用上面的f函数,可以这样调用:f(y= False,x=20)这样就可以打乱顺序自己定义。
【注】:一旦出现了一个关键字定义了,就必须全部,可以理解为,有两种模式,一种是普通的参数传递,另一种就是这个按键值进行传,我把这个开关打开了,你就必须全部按照这个规则去做、
函数传递
函数可以作为参数进行传递。
lambda表达式
所谓的lambda表达式,其实是匿名函数。
它是这样的格式:
lambda 参数1,参数2,... : 返回的值
当然这个lambda表达式赋值给一个变量就可以通过这个变量进行调用了。
如:
r = lambda x : x+x
r(5)
输出:
10
其实就是等同于以下语句:
def r(x):
return x + x
测试
=
1单选(1分)
以下哪一个语句不可以打印出"hello world"字符串(结果需在同一行)?
A.print("hello world")
B.print('''hello
world''')
1.00/1.00
C. print('hello \
world')
D.print('hello world')
2单选(1分)
Python中input()函数的返回的是以下哪一种类型?
A.dict
B.int
C.list
D.str
1.00/1.00
3单选(1分)
以下关于模块module的描述中错误的是哪一项?
A.用import导入了模块之后,可以按照“模块.函数”的格式使用这个模块的函数
B.一个完整的Python文件即是一个模块,是增强Python功能的扩展
C.Python目前还不支持一次性导入多个模块
1.00/1.00
D.可以使用变量来引用函数,例如可以通过bar=math.sqrt进行赋值,然后就可以使用bar来进行计算平方根,例如bar(9)结果是3.0
4单选(1分)
以下关于Python的赋值说法中错误的是哪一个选项?
A.Python 赋值时大小写不敏感
1.00/1.00
B.Python中同一个变量名在不同位置可以被赋予不同的类型与数值
C.Python中不需要显式声明该变量的类型,根据“值”确定类型
D.Python支持链式赋值和多重赋值
5多选(1分)
以下表达式的计算结果是3(或3.0)的选项有哪些?
A.ord('D') – ord('A')
0.50/1.00
B.1 / 2 + 2.5
0.50/1.00
C.9 // 2 – 1.5
D.35 % 10
6多选(1分)
如果想要查看math库中pi的取值是多少,可以利用以下什么方式(假设已经执行了import math,并且只要包含pi取值就可以)?
A.help(math)
0.50/1.00
B.dir(math)
C.print(math.pi)
0.50/1.00
D. print(pi)
7多选(1分)
以下哪些不是Python的关键字?
A.from
B.as
C.list
0.50/1.00
D.dict
0.50/1.00
8判断(1分)
判断如下陈述是否正确?
Python既可以在Shell中运行执行,也可以存储成以.py为扩展名的文本文件使用Python解释器去执行。
A.不可以
B.可以
1.00/1.00