Python学习笔记-Day1

初识Python

第1章 初识Python

1.1什么是编程?

编程的目的就是:让机器按照人们事先为其编写好的程序自发地去工作。

1.2编程语言分为哪些种类?

1.2.1机器语言

机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合,俗称“01编程”。

优点:灵活、直接执行和速度快。

缺点:不同型号的计算机其机器语言是不相通的,按着一种计算机的机器指令编制的程序,不能在另一种计算机上执行。

1.2.2汇编语言

汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的,标识符更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。

优点:能完成一般高级语言所不能实现的操作,而且源程序经汇编生成的可执行文件较小,且执行速度很快。

缺点:源程序比较冗长、复杂、容易出错,而且使用汇编语言需要有更多的计算机专业知识。

1.2.3高级语言

明确地讲,高级语言就是说人话,用人类能读懂的(比如英文)字符编程。高级语言是绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等。

优点:大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。

缺点:高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行。

     1.2.3.1 解释型语言

执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(如python程序,先翻译/编译成字节码,然后由解释器解释执行,这个过程程序员都无需关心了,享受这种便利即可),一边执行。

缺点:效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器。只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。

     1.2.3.2 编译类语言

编译是指在程序执行之前,就将程序源代码“翻译”成机器指令,并保存成二进制文件。

优点:编译后的代码可以直接在机器上运行,运行速度比解释型要高。

缺点:调试程序麻烦,程序一旦需要修改,必须先修改源代码,再重新编译后才能执行。

1.2.4总结

机器语言:优点是最底层,速度最快,缺点是最复杂,开发效率最低

汇编语言:优点是比较底层,速度最快,缺点是复杂,开发效率最低

高级语言:

编译型语言执行速度快,不依赖语言环境运行,跨平台差

解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行

第2章 Python介绍

Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

Python是一种面向对象、解释型计算机程序设计语言。语法简洁清晰,强制用空白符作为语句缩进。Python具有丰富和强大的库,又被称为胶水语言。能把其他语言(主要C/C++)写的模块很轻松的结合在一起。

2.1Python的应用领域

  • Web网站:有很多优秀的开源Web框架,比如Django(最流行)、Tornado(轻量级、异步)、Flask(微型)、Web.py(简单)等。
  • 网络编程:支持高并发的Twisted网络框架, py3引入的asyncio使异步编程变的非常简单。
  • 云计算:目前最火最知名的云计算框架就是OpenStack,Python现在的火,很大一部分就是因为云计算。
  • 数据采集(爬虫):有好用的http库,比如urllib2、requests等。还有高级的屏幕爬取及网页采集框架scrapy。并对网页解析也有很多库,比如lxml、xpath、BeautifulSoup等。
  • 大数据分析:常用模块有Numpy、Pandas。并支持写MapReduce、PySpark处理Spark RDD(弹性分布式数据集)。
  • 运维自动化:编写脚本、Web平台,自动化日常工作。
  • 科学计算:在科学计算也应用越来越广泛,常用的模块有Numpy、SciPy。

    2.2为什么要学习Python?

Python是一种效率极高的的语言,相比于其他语言,使用Python编写时,程序包含的代码更少。Python的语法也有助于创建整洁的代码,使用Python写出来的代码更容易阅读、调试和扩展。

学习Python主要目的是用于实现运维的自动化,我学习Python从以下四方面考虑:

  • 语法简洁,易于学习。
  • 广泛的标准库,适合快速开发,不就追求极快处理速度。
  • 跨平台,基本所有的所有的操作系统都能运行。
  • 运维领域Python最流行。

    2.3Python解释器的版本

1)CPython

当我们装完Python后,其默认解释就是CPython,也是官方默认解释器。CPython是C语言写的,当执行代码时会将代码转化成字节码(ByteCode)。

2)IPython

基于CPython之上的一个交互式解释器,相当于默认解释器的一个增强版,最显著的功能就是自动补全,挺好用的。

3)PyPy

PyPy本身是由Python编写的,使用了JIT编译器(即时编译器)技术,当执行代码时JIT编译器将代码翻译成机器码。性能相比CPython要好。JAVA也采用了JIT编译器。

4)Jython

Jython是由JAVA编写的一个解释器,可以把JAVA模块加载到Python的模块中使用,也可以把Python代码打包成JAR包,意味着允许用Python写JAVA程序了。当执行代码时会将代码转化成JAVA字节码,然后使用JRE(Java Runtime Environment)执行。

5)IronPython

在.NET平台上工作的Python语言。

2.4Python代码执行过程

源代码编译成字节码(.pyc文件)--> Python虚拟机 --> 执行编译好的字节码 --> Python虚拟机将字节码翻译成对应的机器指令(机器码)

运行Python程序时,先编译成字节码并保存到内存中,当程序运行结束后,Python解释器将内存中字节码对象写到.pyc文件中。

第二次再运行此程序时,先回从硬盘中寻找.pyc文件,如果找到,则直接载入,否则就重复上面的过程。

这样的好处是,不重复编译,提供执行效率。

2.5Python代码规范

1)缩进

Python以空白符作为语句缩进,意味着语句没有结尾符,刚入门的朋友往往因为上下逻辑代码不对齐导致运行报错,在Python中最好以4个空格作为缩进符,严格对齐。

2)代码注释

据说优质的代码,注释说明要比代码量多,详细的代码说明不管是对自己还是对他人,在后期维护中都是非常有利的。就像一个流行的开源软件,如果没有丰富的使用文档,你认为会有多少人耐心的去花大把的时间研究它呢?

3)空格使用

在操作符两边,以及逗号后面,加1个空格。但是在括号左右不加空格。

在函数、类、以及某些功能代码块,空出一行,来分隔它们。

4)命名

  • 模块:自己写的模块,文件名全部小写,长名字单词以下划线分隔。
  • 类:大/小驼峰命名。我一般采用大驼峰命名,也就是每个单词首字母大写。类中私有属性、私有方法,以双下划线作为前缀。
  • 函数:首单词小写,其余首字母大写。
  • 变量:都小写,单词以下划线分隔。

需要注意的是:所有的命名规则必须能简要说明此代码意义。

5)代码换行

按照语法规则去换行,比如一个很长的表达式,可以在其中某个小表达式两边进行换行,而不是将小表达式拆分,这样更容易阅读。

2.5.1注释

单行注释:# 被注释内容

多行注释:""" 被注释内容 """

2.6变量

>>> age_of_wangzhiwei = 18 #定义变量
>>> age_of_wangzhiwei    #引用变量
18

2.6.1变量命名规范

在Python中使用变量,需要遵守一些规则,以下是有关变量的规则:

  • 变量名只能包含字母、数字和下划线。变量名可以是字母或下划线开头,但不能以数字开头。
  • 变量名不能包含空格,但可以使用下划线来分割其中的单词。
  • 不要将Python关键字和函数用作变量名。
  • 变量名应既简短又具有描述性。
  • 慎用小写字母i和大写字母O,因为这两个字母会被看错为数字的1和0。

     2.6.2变量的特征

定义一个变量有三个特征:

1)内存空间位置,id:id(变量名)

2)变量类型,type:type(变量名)

3)变量的值,value:变量名

>>> x = 18
>>> id(x)
1516460032
>>> type(x)
<class ‘int‘>
>>> x
18

注意:Python中的变量名没有存储值的功能,变量名与变量值只是一种绑定关系。

第3章 程序交互

代码:

username = input(‘please input your name: ‘)
userpasswd = input(‘please input username password:‘)
print(username)
print(userpasswd)

执行效果:

please input your name: wangzhiwei
please input username password: 123
wangzhiwei
123

第4章 数据类型

4.1整型

整型数字,可以用来表示:年龄、身份证号、电话、QQ号码等。

4.2字符串

只要是在引号里面包含的都是字符串类型,可以用表示:姓名、性别等。

4.3浮点型

4.4列表

列表可以存放多个值,每个值可以是任意数据类型,要取列表内的元素,需要通过下标,下标从0开始。

例子:

>>> hobbies =[1,‘chouyan‘,‘hejiu‘,‘tangtou‘]
>>> hobbies[0]
1
>>> hobbies[1]
‘chouyan‘
>>> hobbies[2]
‘hejiu‘
>>> hobbies[3]
‘tangtou‘
>>> hobbies =[1,‘chouyan‘,‘hejiu‘,‘tangtou‘,[5,6]]
>>> hobbies[4]
[5, 6]
>>> hobbies[4][0]
5
>>> hobbies[4][1]
6

注意,列表中嵌套列表,有几个中括号,输出时最多就有几个中括号。

4.5字典

字典数据类型,采用key:value的方式存储值,可以存放多个值。每个value也可以是任意数据类型,但是key必须是不可变数据类型。

>>> dic={‘name‘: ‘wangzhiwei‘, ‘age‘: 18,‘sex‘: ‘man‘}
>>> dic
{‘name‘: ‘wangzhiwei‘, ‘age‘: 18, ‘sex‘: ‘man‘}
>>> dic[‘name‘]
‘wangzhiwei‘

4.5.1可变数据类型(或称为不可hash类型)

id不变,type不变,值改变。

列表属于可变类型。

4.5.2不可变数据类型

数字和字符串都是不可变类型。

4.6布尔类型

布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断。

>>> age = 18
>>> age > 100
False

4.7格式化输出


操作符号


说明


%s


字符串(str())


%d


整数


%f


浮点数,可指定小数点后的精度

字符串和整型格式化输出例子:

users=[
   {‘username‘:‘alex‘,‘age‘:18,‘job‘:‘teacher‘,‘hobbie‘:‘girls‘},
   {‘username‘:‘egon‘,‘age‘:16,‘job‘:‘teacher‘,‘hobbie‘:‘study‘}
]
msg=‘‘‘
---------- info of %s --------
Name  :  %s
Age   :  %d
Job   :  %s
Hobbie:  %s
---------- end --------
‘‘‘%(users[1][‘username‘],users[1][‘username‘],users[1][‘age‘],users[1][‘job‘],users[1][‘hobbie‘])
print(msg)

保留小数点格式化输出例子:

>>> print(‘%.3f‘ %(float(100)/1024))
0.098

第5章 运算符

5.1算数运算

以下假设变量:a=10,b=20


运算符


描述


实例


+


加,两个对象相加


a + b输出结果是30


-


减,得到附属或是一个数减去另一个数


a - b输出结果是-10


*


乘,两个数相乘或是返回一个被重复若干次的字符串


a * b输出结果是200


/


除,x除以y


b / a输出结果是2


%


取模,返回除法的余数


b % a输出结果是0


**


幂,返回x的y次幂


a ** b为10的20次方


//


取整除,返回商的证书部分


9 // 2输出结果是4,9.0//2.0输出结果是4.0

5.2赋值运算

以下假设变量:a=10,b=20


运算符


描述


实例


=


简单的复制运算符


c = a + b将a + b的运算结果赋值为c


+=


加法赋值运算符


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

5.3逻辑运算


运算符


描述


实例


and


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


(a and b)返回true


or


布尔“或”,如果x为True,它返回True,否则它返回y的计算值


(a or b)返回true


not


布尔“非”,如果x为True,返回False,如果x为False,它返回True


not(a and b)返回false

5.4成员运算


运算符


描述


in


在对象里


not in


不在对象里

时间: 2024-10-29 19:06:49

Python学习笔记-Day1的相关文章

Python学习笔记——Day1

突破从改变开始,一行行字符,熟悉的感觉,还是那个味儿...呀哈哈哈 一.变量 变量是计算机语言中能存储计算结果或能表示值的抽象概念,变量可以通过变量名访问.调用及修改.变量通常表示可变状态,即具有存储空间的抽象.变量是一种为方便使用的占位符,用于引用计算机内存地址.使用变量不需要了解变量在计算机内存中的地址,只需要通过变量名引用就可以查看和更改变量的值. 命名规则 1.由字母.数字.下划线组成,且不能以数字开头,不能包含特殊字符,字母区分大小写. 2.不能保留字命名. 3.定义的变量名应具有一定

Python学习笔记day1【基础介绍】

Alex博客:http://www.cnblogs.com/alex3714/articles/5465198.html 一.本节主要内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc文件 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 二.具体内容 1.python介绍 python的创始人为吉多·范罗苏姆(Guid

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

python学习笔记12-模块使用

python学习笔记12-模块使用 模块os,sys 什么是模块? 模块os,sys 模块是Python组织代码的一种基本方式 一个Python脚本可以单独运行,也可以导入到另外一个脚本运行,用import hello语句来导入,不用加入.py 什么是Python的 包? Python的模块可以按照目录组织为包 创建一个包的步骤: 创建一个名字为包名的目录 在改目录下创建一个__init__.py文件 根据需要,在该目录下存放脚本文件或已编译的扩展及子包 import pack.m1,pack.

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来

Python学习笔记_Python对象

Python学习笔记_Python对象 Python对象 标准类型 其他内建类型 类型对象和type类型对象 Python的Null对象None 标准类型操作符 对象值的比较 对象身份比较 布尔类型 标准类型的内建函数 typeObj cmpobj1 obj2 strobj reprobj typeobj isinstanceobj 标准类型的分类 存储模型 更新模型 访问模型 不支持的类型 Python学习笔记_Python对象 首先来理解一个通俗的含义,什么是对象?其实对象无论在什么语言里面

OpenCV for Python 学习笔记 三

给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left,right: 分别表示四个方向上边界的长度 borderType: 边界的类型 有以下几种: BORDER_REFLICATE # 直接用边界的颜色填充, aaaaaa | abcdefg | gggg BORDER_REFLECT # 倒映,abcdefg | gfedcbamn | nmabcd

python 学习笔记 14 -- 常用的时间模块之datetime

书接上文,前面我们讲到<常用的时间模块之time>,这次我们学习datetime -- 日期和时间值管理模块 使用apihelper 查看datetime 模块,我们可以看到简单的几项: date       ---  日期对象,结构为date(year, month, day) time       ---  时间值对象,结构为 time([hour[, minute[, second[, microsecond[, tzinfo]]]]]).时间对象所有的参数都是可选的.tzinfo 可以