Day1-python理论基础
一、python介绍
上图中排名前五的语言中,C、C++、C#都是编译型语言,python与java则都是解释型语言,那么什么是编译型语言,什么是解释型语言?
编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。
优点是只需要编译一次,运行时不需要编译,所以程序执行效率高,缺点相对就很明显,跨平台性差,要针对不同平台生成不同的执行文件。
解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。
优点是有良好的平台兼容性,直接修改代码后快速部署就可以直接运行,缺点是由于每次运行都需要编译一次,性能上相对编译型语言自然就会差一些。
二、python的优缺点
python的优点:
1、简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。
2、易学:Python极其容易上手,因为Python有极其简单的说明文档。
3、速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。
4、免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
5、高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
6、可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。
7、解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。
8、面向对象:Python既支持面向过程的编程也支持面向对象的编程。
9、可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。
10、可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
11、规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。
python的缺点:
1、单行语句和命令行输出问题:很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。
2、运行速度慢:这里是指与C和C++相比。
3、代码无法加密。
三、python2.7 or python3.x
其实对于python的版本选择,由于以前工作的时候做的工作都是和python2.7打交道所以一直使用的是python2.7;选择3.x的原因主要有几点,首先2.7版本于2020年将停止更新服务,再者3.x的兼容性、编码等原因。
四、安装python
windows下安装python
下载安装包:
https://www.python.org/downloads/
安装:
默认安装路径:
C:\PYTHON35
配置环境变量:
1. 右键计算机;
2. 属性;
3. 高级系统设置;
4. 高级;
5. 环境变量;
6. 在第二个框中找到Path双击;
7. 将python安装目录追加到值中,用;分隔。
五、Hello World!
新建一个hello.py 文件,并输入:
print("Hello World")
在命令行中执行命令:
python hello.py
即可看到系统返回:
E:\>python hello.py
Hello World!
六、变量
1、变量的作用:
变量是只不过保留的内存位置用来存储值。这意味着,当创建一个变量,那么它在内存中保留一些空间。
根据一个变量的数据类型,解释器分配内存,并决定如何可以被存储在所保留的内存中。因此,通过分配不同的数据类型的变量,你可以存储整数,小数或字符在这些变量中。
2、变量赋值:
Python的变量不必显式地声明保留的存储器空间。当分配一个值给一个变量的声明将自动发生。等号(=)来赋值给变量。
操作数=操作符的左边是变量,操作数=操作符的右侧的名称在变量中存储的值。例如:
counter = 100
miles = 1000.0
name = "John"
3、命名规则:
变量名只能是字母、数字或者下划线的任意组合,并且首字母不能是数字,同时也不可以使用以下关键字声明变量:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import','in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
七、编码格式
1. ASCII
ASCII(American Standard Code for Information Interchange),是一种单字节的编码。计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制 符号。不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础。
2. MBCS
然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求。后来每个语言就制定了一套自己的编码,由于单字节能表示的字符太少,而且同时也需要与ASCII编码保持兼容,所以这些编码纷纷使用了多字节来表示字符,如GBxxx、BIGxxx等等,他们的规则是,如果第一个字节是\x80以下,则仍然表示ASCII字符;而如果是\x80以上,则跟下一个字节一起(共两个字节)表示一个字符,然后跳过下一个字节,继续往下判断。
这里,IBM发明了一个叫Code Page的概念,将这些编码都收入囊中并分配页码,GBK是第936页,也就是CP936。所以,也可以使用CP936表示GBK。
MBCS(Multi-Byte Character Set)是这些编码的统称。目前为止大家都是用了双字节,所以有时候也叫做DBCS(Double-Byte Character Set)。必须明确的是,MBCS并不是某一种特定的编码,Windows里根据你设定的区域不同,MBCS指代不同的编码,而Linux里无法使用 MBCS作为编码。在Windows中你看不到MBCS这几个字符,因为微软为了更加洋气,使用了ANSI来吓唬人,记事本的另存为对话框里编码ANSI就是MBCS。同时,在简体中文Windows默认的区域设定里,指代GBK。
3. Unicode
后来,有人开始觉得太多编码导致世界变得过于复杂了,让人脑袋疼,于是大家坐在一起拍脑袋想出来一个方法:所有语言的字符都用同一种字符集来表示,这就是Unicode。
最初的Unicode标准UCS-2使用两个字节表示一个字符,所以你常常可以听到Unicode使用两个字节表示一个字符的说法。但过了不久有人觉得256*256太少了,还是不够用,于是出现了UCS-4标准,它使用4个字节表示一个字符,不过我们用的最多的仍然是UCS-2。
UCS(Unicode Character Set)还仅仅是字符对应码位的一张表而已,比如"汉"这个字的码位是6C49。字符具体如何传输和储存则是由UTF(UCS Transformation Format)来负责。
一开始这事很简单,直接使用UCS的码位来保存,这就是UTF-16,比如,"汉"直接使用\x6C\x49保存(UTF-16-BE),或是倒过来使用\x49\x6C保存(UTF-16-LE)。但用着用着美国人觉得自己吃了大亏,以前英文字母只需要一个字节就能保存了,现在大锅饭一吃变成了两个字节,空间消耗大了一倍……于是UTF-8横空出世。
UTF-8是一种很别扭的编码,具体表现在他是变长的,并且兼容ASCII,ASCII字符使用1字节表示。然而这里省了的必定是从别的地方抠出来 的,你肯定也听说过UTF-8里中文字符使用3个字节来保存吧?4个字节保存的字符更是在泪奔……(具体UCS-2是怎么变成UTF-8的请自行搜索)
另外值得一提的是BOM(Byte Order Mark)。我们在储存文件时,文件使用的编码并没有保存,打开时则需要我们记住原先保存时使用的编码并使用这个编码打开,这样一来就产生了许多麻烦。 (你可能想说记事本打开文件时并没有让选编码?不妨先打开记事本再使用文件 -> 打开看看)而UTF则引入了BOM来表示自身编码,如果一开始读入的几个字节是其中之一,则代表接下来要读取的文字使用的编码是相应的编码:
BOM_UTF8 '\xef\xbb\xbf' BOM_UTF16_LE '\xff\xfe' BOM_UTF16_BE '\xfe\xff'
并不是所有的编辑器都会写入BOM,但即使没有BOM,Unicode还是可以读取的,只是像MBCS的编码一样,需要另行指定具体的编码,否则解码将会失败。
八、数据类型:
1、数字
int(整型):
在32位机器上,整数的位数为32位,取值的范围为-2**31 ~2**31-1,即-2147483648~2147483648
在64位机器上,整数的位数为64位,取值的范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型):
和C语言不通,python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
在Python2.2开始,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数字后面不加字母L也不会导致严重后果。
float(浮点型):
浮点数用于处理实数,也就是带有小数的数字,占用8个字节(64位),其中52位表示低,11位表示指数,剩下的一位表示符号。
complex(复数):
复数是由实数部分和虚数部分组成,一般形式为x+yj,其中x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
2、布尔值
真或假 True False
3、字符串
Python中最常用的数据类型,可以使用引号('或“)来创建字符串。
var1 = 'Hello World'
var2 = "Python"
下面介绍一下字符串常用的几个功能:
(1)移除空白
strip()方法可以移除字符串中头尾指定的字符,当括号中为空的时候默认为空格,如下所示:
>>> s = ' abc'
>>> s.strip()
'abc'
也可以在括号中指定一个值,如下所示:
>>> str = "0000000this is string example....wow!!!0000000";
>>> str.strip('0')
'this is string example....wow!!!'
(2)分割
split()方法通过制定分隔符,对字符串进行切片,如果参数num有置顶值,则只分隔num个字符串
split()的语法:
str.split(str="", num=string.count(str)).
实例:
>>> str = "Line1-abcdef \nLine2-abc \nLine4-abcd"
>>>
>>> str.split()
['Line1-abcdef', 'Line2-abc', 'Line4-abcd']
>>>
>>> str.split(' ',1)
['Line1-abcdef', '\nLine2-abc \nLine4-abcd']
(3)长度
len()可以输出字符串的长度
>>> str = "Line1-abcdef \nLine2-abc \nLine4-abcd"
>>> len(str)
35
(4)索引
索引获取特定偏移的元素:
字符串中第一个元素的偏移为0,字符串中最后一个元素的偏移为-1,str[0]获取第一个元素,str[-2]获取倒数第二个元素。
>>> str='abcd'
>>> str[0]
'a'
>>> str[-1]
'd'
>>> str[-2]
'c'
(5)切片
通常上边界不包括在提取字符串内,如果没有指定值,则分片的边界默认为0和序列的长度
str[1:3]获取从偏移为1的字符一直到偏移为3的字符串,不包括偏移为3的字符串 “tr”
str[1:] 获取从偏移为1的字符一直到字符串的最后一个字符(包括最后一个字符) “tring”
str[:3] 获取从偏移为0的字符一直到偏移为3的字符串,不包括偏移为3的字符串 “str”
str[:-1] 获取从偏移为0的字符一直到最后一个字符(不包括最后一个字符串) “strin”
str[:] 获取字符串从开始到结尾的所有元素 “string”
str[-3:-1] 获取偏移为-3到偏移为-1的字符,不包括偏移为-1的字符 “in”
str[-1:-3]和str[2:0] 获取的为空字符,系统不提示错误 “”
分片的时候还可以增加一个步长,str[::2] 输出的结果为 “srn”
(6)格式化输出
1. 打印字符串
>>> print ("His name is %s"%("Aviad"))
His name is Aviad
2.打印整数
>>> print ("He is %d years old"%(25))
He is 25 years old
3.打印浮点数
>>> print ("His height is %f m"%(1.83))
His height is 1.830000 m
4.打印浮点数(指定保留小数点位数)
>>> print ("His height is %.2f m"%(1.83))
His height is 1.83 m
5.指定占位符宽度
>>> print ("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83))
Name: Aviad Age: 25 Height: 1.83
6.指定占位符宽度(左对齐)
>>> print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83))
Name:Aviad Age:25 Height:1.83
7.指定占位符(只能用0当占位符?)
>>> print ("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83))
Name:Aviad Age:00000025 Height:00001.83
8.科学计数法
>>> format(0.0015,'.2e')
'1.50e-03'
Day1-python理论基础的更多相关文章
- Day1 - Python基础1 介绍、基本语法、流程控制
Python之路,Day1 - Python基础1 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼 ...
- python 全栈开发,Day1(python介绍,变量,if,while)
python基础一 一,Python介绍 python的出生与应用 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为 ...
- python全栈开发,Day1(python介绍,变量,if,while)
python基础一 一,Python介绍 python的出生与应用 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为 ...
- Python day1 ---python基础1.1
1.模块初识2..pyc是个什么鬼?3.数据类型初识 4.数据运算5.入门知识拾遗 1.模块初识 sys模块 import sys print(sys.path) #打印环境变量 'D:\\Pycha ...
- day1 python判断输入的密码是否正确
_username = 'leon' _password = 'zyl' username = input("username:") password = input(" ...
- python day1 python介绍,安装及运算符
目录 python day1 1. 不同编程语言的对比 2. 为什么学python? 3. python的种类 4. python的安装(windows系统) 5. 导入模块或包 6. pyc文件 7 ...
- Python之路,Day1 - Python基础1
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- python开发 Day1 python基础
编程语言主要从以下几个角度为进行分类,编译型和解释型.静态语言和动态语言.强类型定义语言和弱类型定义语言,每个分类代表什么意思呢,我们一起来看一下. 编译和解释的区别是什么? 编译器是把源程序的每一条 ...
- Day1 Python 介绍及基础
******************本文目录******************一.Pyhon基本介绍 1.Why Python? 2. Python 是一门什么样的语言? 3.Python的优缺点: ...
- Day-1: Python准备知识
python简介 不同于c语言这种贴近硬件的言语,Python是用来编写应用程序的高级编程语言.Python是一款开源软件,所以它有非常完善的代码库,宝库内置的基本库和众多开发者提供的第三方库.这就允 ...
随机推荐
- windows下oracle数据库定时备份与压缩批处理脚本(win7/win2008亲测通过)
第一种方式:全备份,并直接覆盖原来的备份文件,固定命名. 脚本: @echo off exp system/a123@HZPG file=e:\db_backup\oradata.dmp log=e: ...
- Linux下的C程序如何调用系统命令,并获取系统的输出信息到C程序中
直接贴代码: #include <stdio.h> #include <string.h> #include <errno.h> int main(int argc ...
- openwrt的默认/etc/config/network文件是如何生成的?
openwrt的network文件,或者说在/etc/config下的文件,都是动态生成的. 脚本的函数定义在openwrt1407/package/base-files/files/lib/func ...
- Bootstrap Paginator分页插件
Bootstrap Paginator分页插件使用示例 最近做的asp.netMVC项目中需要对数据列表进行分类,这个本来就是基于bootstrap开发的后台,因此也就想着bootstrap是否有分页 ...
- HDU2093--考试排名
考试排名 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- easyui datagrid显示进度条控制操作
在当我们需要控制时间前台实际项目页面datagrid显示进度条的数据加载时运行,和datagrid默认情况下只在有url加载运行时的数据显示方式的进度条.下面的代码手动控制: 打开一个进度条: $(' ...
- Android项目---常用动画
在项目中经常会有闪屏的效果 在这里主要是通过定时器,将已经设定好的效果展现出来 /* * 2.5秒以后开始执行Runnable的run方法 */ new Handler().postDelayed(n ...
- Win7下Redmine2.0.3+Mysql55+Ruby1.8.7成功安装记录分享
准备软件: Ruby 下载网页: http://rubyforge.org/frs/?group_id=167&release_id=46836 http://files.rubyforge. ...
- linux 启动oracle报cannot restore segment prot after reloc: Permission denied
error while loading shared libraries: $ORACLE_HOME/lib/libnnz10.so: cannot restore segment prot afte ...
- c#中关于大对象数组的一些心得
在之前的一个课题中,曾经需要用到2W行*3W列的float类型矩阵(大约2.4G),由于无法创建大于2G的对象,当时采用了一些取巧的办法回避了,并没有拿出精力来研究一下这个问题.今天和公司的张哥(大牛 ...