Python是一种跨平台的计算机程序设计语言,是一种面向对象的动态类型语言,是一种解释型脚本语言,可以应用于Web和Internet开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发等领域。Python的设计哲学是“优雅”、“明确”、“简单”,因此,Python开发者的哲学是“最好只有一种方法来做一件事”。
面向对象的思维方式:面向对象是一种思维方式,也是一门程序设计技术
要解决一个问题前,首先考虑是由“谁”来做,怎么做事情是“谁”的职责,最后把事情做好就行(对象为:“谁”)
要解决复杂的问题,就可以找多个不同的对象,各司其职,共同实现,最终完成
简单,易学,免费,开源,面向对象,有丰富强大的库,扩展性强。
如果需要一段关键代码运行的更快或者希望某些算法不公开,可以把这部分程序用C或者C++编写,然后在Python程序中使用。
运行速度慢(但运行速度慢对用户体验的影响远远不及网络延迟带来的影响,所以可以忽略该缺点)
国内市场较小
中文资料匮乏
解释器又叫做直译器,是一种电脑程序,能够把高级编程语言一行一行直接转译运行。解释器不会依次把整个程序转译出来,而是一行一行逐行转译,因此解释器的程序运行速度较为缓慢,可以用来运行解释型语言。
编译器就是将一种语言(通常为高级语言)翻译为另一种语言(通常为低级语言)的程序,一个现代编译器的主要工作流程为:源代码–>预处理器–>编译器–>目标代码–>链接器–>可执行程序,可以用来运行编译型语言。
解释器:直接执行用编程语言编写的指令(逐行编译,不会得到额外的文件)
编译器:把源代码转换成低级语言代码(得到一个低级语言的可执行程序文件)
优点:运行速度快、代码效率高、编译后的程序不可修改,保密性较好。
缺点:代码需要经过编译才可运行,可移植性差,只能在兼容的操作系统上运行。
优点:可移植性较好,只要有解释环境,可以在不同的操作系统上运行。
缺点:运行需要解释环境,运行速度相对较慢,占用资源相对较多,代码效率相对较低。
命令 | 功能 |
---|---|
tar zxf Python-3.6.4.tgz -C /opt | 解压安装包,指定解压到/opt目录下 |
cd /opt/Python-3.6.4/ | 进入该目录下的解压好的Python3.6目录,进入后安装时可以提供安装所需环境 |
./configure --prefix=/usr/local/python3 --with-ssl | 检测安装python3需要的东西,安装时指定路径/usr/local/python3,检测过程中可能会遇到依赖关系等报错,解决即可 |
yum install gcc -y | 安装gcc(c语言编译器)解决一些问题 |
yum install zlib zlib-devel openssl-devel -y | 安装这些安装包,解决剩下的一些依赖关系问题 |
./configure --prefix=/usr/local/python3 --with-ssl | 再次检测安装python3时需要的东西 |
make && make install | make是用来编译的,它从Makefile中读取命令然后编译,make install是用来安装的,也是从Makefile中读取命令,然后安装到指定路径 |
cd /usr/local/python3/bin | 进入到该目录下 |
./python3 | 运行python3,看是否能进入python3解释器 |
命令 | 功能 |
---|---|
export PATH="/usr/local/python3/bin:$PATH" | 临时设定环境变量 |
python3 | 查看是否能使用环境变量进入python3解释器 |
echo export PATH="/usr/local/python3/bin:$PATH" >> /etc/profile | 将设定环境变量的命令追加到/etc/profile文件中,意为系统级的环境变量 |
vim /etc/profile | 确认以下是否追加成功 |
source /etc/profile | source运行以下该文件,使修改立即生效 |
Python的语句后不用加“;”,且对缩进要求严格。
Python2中默认无法识别中文,Python3则可以,为了统一运行环境,可以做以下设定
# _*_coding:utf-8_*_ #在py文件中输入该行,意为使用UTF-8编码的方式运行。该编码是世界通用的语言编码,无论是中文、日文、韩文、还是阿拉伯文都可以正常显示
>>> a = 2 #将2赋值给a
>>> id(a) #查看a指向的地址空间
9322496 #查看结果
>>> b = a #把a赋值给b
>>> id(b) #查看b指向的地址空间
9322496 #查看结果,与a相同,因为指向是同一个地址空间
>>> id(2) #查看2指向的地址空间
9322496 #相同,因为a指向的是2的地址空间,b指向a的地址空间,也就是指向2的地址空间
>>> type(a) #查看a的类型
#结果:a为int(整形)
>>> b = float(a) #转换a的类型为浮点型,将转换结果赋值给b
>>> type(b) #查看b的类型
#结果:b为float(浮点型)
>>> b #查看b的值
2.0 #b为2.0(浮点型)
>>> a #查看a的值
2 #a为2(整形)(此处虽然转换过a的类型,不过在转换完成后,新的浮点型值的地址空间会立刻被系统回收,a的值仍然是原整形值的地址空间,不会发生改变,将转换结果赋值给b,可以让系统不回收新地址空间,因为新地址空间被b指向)
>>> b = "float(a)" #看上去像是将转换结果赋值给b,其实用引号引起来表示的是字符串而不是转换结果,所以b为字符串型
>>> type(b) #查看b的类型
#结果:b为str(字符串型)
>>> b #查看b的值
"float(a)" #b的值为引号内的字符串,而不是该字符串的运行结果
>>> c = 0 #把0赋值给c,该0为整形
>>> bool (c) #查看c的bool值
False #为假(False)
>>> c = "0" #把"0"赋值给c
>>> bool (c) #查看c的bool值
True #为真(True),此时为真是因为,赋给c的值是一个字符串"0",字符串的"0"不是一个空值,字符串的""才代表0的意思,""为一个空值
>>> c = "" #把""赋值给c
>>> bool (c) #查看c的bool值
False #为假(False),因为字符串的""就代表0,意为给c赋予一个空的值
>>> c = " " #把" "赋值给c
>>> bool(c) #查看c的bool值
True #为真(True),因为“ ”不是赋予空值,而是赋予一个空格的值给c,空格也是有值的,不代表空值,即不为0
>>> b #查看b的值
2.0 #b的值为2.0,是浮点型
>>> int(b) #输出转化b的值为int型的结果
2 #结果为2,是int型
>>> type(b) #查看b的类型
#b仍为浮点型,因为在转化完成输出结果后,新的int型的地址空间被立刻回收,b的值仍为浮点型,没有发生改变
>>> type(int(b)) #查看输出转化b的值为int型结果的类型
#该结果为int型(不代表b为int型)
>>> a = 2 #将2赋值给a
>>> b =1.0 #将1.0赋值给b
>>> c="abc" #将"abc"赋值给c
>>> d="123" #将"123"赋值给d
>>> a #查看a的值
2 #为2(int型)
>>> b #查看b的值
1.0 #为1.0(float型)
>>> c #查看c的值
'abc' #为'abc'(str型)
>>> d #查看d的值
'123' #为'123'(str型)
>>> int(b) #将b(float型)转化为int型的结果输出
1 #成功,结果为1(int型)
>>> int(d) #将d(str型)转化为int型的结果输出
123 #成功,结果为123(int型)
>>> ind(c) #将c(str型)转化为int型的结果输出
Traceback (most recent call last):
File "", line 1, in
NameError: name 'ind' is not defined #失败,报错,因为c不可以转化为int型
>>> c #查看c的值
'abc' #为'123'
>>> del c #删除变量c
>>> c #查看c的值
Traceback (most recent call last):
File "", line 1, in
NameError: name 'c' is not defined #失败,报错,因为变量c已经删除,所以不可查看c的值
>>> age = input("age:") #将input("age:")的结果赋值给变量age
age:19 #输入19,意为输入的19将赋值给变量age
>>> age #查看age的值
'19' #为'19'(str型)
>>> age >18 #将age(str型)与18(int型)比较大小
Traceback (most recent call last):
File "", line 1, in
TypeError: '>' not supported between instances of 'str' and 'int' #失败,报错,因为input()的结果都为str型,age的值为str型,与18(int型)的数据类型不同,无法进行比较
>>> age = 19 #将19(int型)赋值给age
>>> age #查看age的值
19 #为19(int型)
>>> age >18 #将age(此时int型)与18(int型)比较大小
True #成功,age>18的结果为真
>>> input('Num:') #将Num:后输入的值转化为str类型
Num:1 #输入1(int型)
'1' #转化为'1'(str型)
>>> input('Num:') #
Num:2.3 #输入2.3(float型)
'2.3' #转化为'2.3'(str型)
>>> input('Num:') #
Num:zxc #输入zxc(非正确格式的str型)
'zxc' #转化为'zxc'(str型)
>>> import getpass #import为动态加载类和函数的内置方法,如果一个模块经常变化就可以使用import来动态载入
>>> num = getpass.getpass('请输入您的密码:') #getpass.getpass()会显示提示字符串,关闭键盘的屏幕回显,然后读取密码,此处为了查看没有回显的密码,将结果赋值给num
请输入您的密码: #输入想要的密码,此时屏幕将没有密码的回显
>>> num #查看num的值
'123456' #查看到了没有回显的密码,证明密码是真实输入了的,只是没有回显
该函数返回登陆的用户名,不需要参数
该函数会检查环境变量LOGNAME,USER,LNAME,USERNAME,以返回一个非空字符串,若这些变量的设置为空,会从支持密码的数据库中获取用户名,否则会出发一个“找不到用户”的异常。
>>> input('请输入:') #
请输入:1 #输入1(int型)
1 #结果为1(int型)
>>> input('请输入:') #
请输入:2.3 #输入2.3(float型)
2.3 #结果为2.3(float型)
>>> input('请输入:') #
请输入:zxc #输入为zxc,但此时类型错误,该输入方式不属于str型
Traceback (most recent call last):
File "", line 1, in
File "", line 1, in
NameError: name 'zxc' is not defined #类型错误,报错
>>> input('请输入:') #
请输入:'zxc' #输入为'zxc'(正确的str型)
'zxc' #结果为'zxc'(str型)
>>> raw_input('请输入:') #将请输入:后输入的值转化为str类型
请输入:1 #输入1(int型)
'1' #结果为'1'(str型)
>>> raw_input('请输入:') #
请输入:1.2 #输入1.2(float型)
'1.2' #结果为'1.2'(str型)
>>> raw_input('请输入:') #
请输入:asd #输入asd(非正确格式的str型)
'asd' #结果为'asd'(str型)
>>> name="sms" #将'sms'赋值给name
>>> age=13 #将13赋值给age
>>> print("%s今年已经%d岁啦" %(name,age)) #%s为str型数据的占位符,%d为int型数据的占位符,后面的顺序为从左到右使用到的数据的先后顺序
sms今年已经13岁啦 #输出结果为“(str型的name的值)今年已经(int型的age的值)岁啦”
>>> money=10000000.234
>>> print("%s的工资是%f" %(name,money)) #%f为float型数据的占位符
sms的工资是10000000.234000 #输出结果为“(str型name的值)的工资是(float型money的值)”,默认float型的值保留6位小数
>>> print("%s的工资是%.1f" %(name,money)) #.1为输出时只保留小数点后1位
sms的工资是10000000.2 #输出结果的float型值只保留小数点后1位
>>> sid=1
>>> print("%s的学号是%.5d" %(name,sid)) #.5位输出时,int型数据为5位数,不足五位时在前面补0
sms的学号时00001 #输出结果的int型值有5位,不足时在前面补了0
>>> scale=0.1
>>> print("数据的百分比为:%.0f%%" %(scale*100)) #%%代表显示“%”,scale*100后,加上后面的%,就可显示百分比
数据的百分比为:10%
运算符与shell中相同,下面举例演示:(输入学生的姓名,依次输入语文、数学、英语成绩,计算该学生的平均成绩,并显示该学生语文成绩占总成绩的百分比)
vim pingjun.py #建立一个py文件并编辑
NAME=input('请输入学生姓名:') #将输入的学生姓名赋值给NAME
YW=float(input('请输入该学生语文成绩:')) #将输入的语文成绩赋值给YW
SX=float(input('请输入该学生数学成绩:')) #将输入的数学成绩赋值给SX
YY=float(input('请输入该学生英语成绩:')) #将输入的英语成绩赋值给YY
AVE=float((YW+SX+YY)/3) #计算平均成绩,并转化为float型,将转化结果赋值给AVE
PERCENT=float(YW/(YW+SX+YY)) #计算语文成绩占总成绩的百分比,并转化为float型,将转化结果赋值给PERCENT
print('%s的平均成绩为:%.1f,语文成绩占总成绩的%.0f%%' %(NAME,AVE,PERCENT*100) #打印“(NAME的值)的平均成绩为:(AVE的值保留一位小数),语文成绩占总成绩的(PERCENT*100的值)%”
python3 pingjun.py #在python3解释器的环境下运行pingjun.py
请输入学生姓名:zxc #输入zxc
请输入该学生语文成绩:50 #输入50
请输入该学生数学成绩:30 #输入30
请输入该学生英语成绩:20 #输入20
zxc的平均成绩为33.3,语文成绩占总成绩的50% #输出结果计算正确
下载pycharm压缩包
命令 | 功能 |
---|---|
su - kiosk | 切换到普通用户 |
tar zxf pycharm-community-2019.2.1.tar.gz -C /opt | 解压pycharm压缩包 |
cd /opt/pycharm-community-2019.2.1/bin | 进入到解压后的该目录 |
sh pycharm.sh | 运行该程序,即可打开pycharm |
命令 | 功能 |
---|---|
/home/kiosk/PycharmProjects | 默认项目保存路径 |
File–>New Project…–>修改名称–>create | 创建新项目成功 |
File–>Settings–>Keymap | 修改快捷键 |
Settings–>Editor–>Font | 修改字体大小格式等 |
Editor–>File and Code Templates | 修改创建文件时默认写入的代码内容,可在此写入# _coding:utf-8_来保证运行环境 |
Settings–>Project:xxx–>Project Interpreter | 修改运行时的python版本,若没有则添加想要添加的python版本的路径,即可添加该版本 |
右键点击新建的Project–>New–>Python File | 在此项目下新建py文件 |
命令 | 功能 |
---|---|
Ctrl+Alt+s | pycharm设置界面(Settings) |
Alt+insert | 快捷创建文件 |
Ctrl+Alt+l | 格式化python代码,使代码格式标准,若冲突,可修改快捷键 |
Ctrl+z | 返回上一步 |
Ctrl+Shift+z | 恢复返回上一步 |
Shift+F6 | 快捷重命名 |
Ctrl+/ | 快速注释代码,若代码已经注释,则可以快速取消注释代码 |