程序媛

<h1>DAY1——Python简介及入门<\h1>

python简介

  • 16年python新排名:

  • python的应用领域

Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团、sogou等。互联网公司广泛使用Python来做的事一般有:自动化运维自动化测试大数据分析、爬虫、Web 等。

python之父:van rossum 1989圣诞节假期

python在linux系统中的独特地位。

python解释器

python是一门解释性语言,什么是解释性语言呢?

解释性语言:解释型语言,是在运行的时候将程序翻译成机器语言。

**编译器和解释器的区别

解释性语言要想对代码做解释,就需要一个解释器,什么是解释器?

python解释器做的事:

解释器都有哪些呢? 

Cpython:用C实现的Python解释器。

 Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

Jython:用java实现的Python解释器。

   在Python中可以直接使用Java代码库,这使得使用Python可以方便地为Java程序写测试代码,更进一步,可以在Python中使用Swing等图形库编写GUI程序。

   Jython会将Python代码动态编译成Java字节码,然后在JVM上运行转换后的程序,这意味着此时Python程序与Java程序没有区别,只是源代码不一样。

   在Python 中写一个类,像使用Java 类一样使用这个类是很容易的事情。

   你甚至可以把Jython 脚本静态地编译为Java 字节码。

IronPython
    Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)

Pypy:用Python实现的Python解释器。

  将python代码转换成python的字节码转换成机器码。

    因为使用了JIT技术,JIT解释器可以使得运行在它之上的程序比传统解释器快。而JIT这项技术本身跟实现这个技术的语言是无关的。
    Pypy的前身psyco,就是用C语言直接实现了JIT解释器。但是C因为跟底层过于接近,所以实现JIT解释器有诸多限制。(比如Psyco到项目死亡为止都没能实现出64位的JIT解释器)
Pypy则换了另外一种思路。它先实现了一个Python的子集(注意,不是完整的python),叫RPython。然后用RPython去实现了Python的JIT解释器。这个RPython本身,并不依赖运行时解释器,而是直接被翻译成C代码(实际上可以翻译成多种目标代码,如Java、C#等)再进行编译,本质上它是一种编译型语言。
    所以,用RPython写出来的程序,最终是会被编译成本地代码的,跟C写的没有本质区别。由于RPython作者强大的优化功力,RPython程序最终编译结果基本等同于C直接写的效率。用这种程序实现出来的JIT解释器,自然也不会慢。而JIT技术,又保证了运行在这个解释器上的Python程序的效率的提升。这样一来,Pypy比传统Python快,就不足为奇了。
详解Pypy为什么会快?

Rubypython、Brython... 

*我们使用的python解释器——Cpython

python环境

专门写了一篇安装文档,不会装的童鞋看过来看过来 http://www.cnblogs.com/Eva-J/articles/5452281.html

python入门

第一句python代码

创建一个hello.py文件,里面写一句话:

print ("hello,world")

python3 hello.py 执行这个文件。看看能得到什么结果?

ps:在linux系统中,执行前需给予 hello.py 执行权限,chmod 755 hello.py

/*

python代码的执行过程如下:

*/

python的解释器和.pyc文件

  • python的解释器

  上一步中执行 python /home/dev/hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。

  如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下:

#!/usr/bin/env python3
 
print"hello,world"

  如此一来,执行: ./hello.py 即可。

  ps:在linux系统中,执行前需给予 hello.py 执行权限,chmod 755 hello.py

/*

  • .pyc文件:

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

*/

注释

  单行注视:# 被注释内容

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

初识基本数据类型

  • 数字
    •   int(整型)
      在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
      在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
    •   long(长整型)
      跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
      注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
    •   float(浮点型)
      浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
    •   complex(复数)
      复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
    注:Python中存在小数字池:-5 ~ 257
  • boolean
  布尔型。(真或假,1 或 0)

 

  • str

  字符串型。

"hello world"
    python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
万恶的字符串拼接
 
name = "Alex"
print ("i am %s " % name)
 
#输出: i am Alex
  
PS: 字符串是 %s;整数 %d;浮点数%f
字符串格式化
  字符串常用功能:
    •   移除空白
    •   分割
    •   长度
    •   索引
    •   切片

  list 列表。

 

name_list = ['Alex', 'Seven', 'Eva']
或
name_list = list(['Alex', 'Seven', 'Eva'])
list code

  基本操作:

    •   索引
    •   切片
    •   追加
    •   删除
    •   长度
    •   切片
    •   循环
    •   包含
  • tuple 元组。
ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))
tuple code

 

  基本操作:
    •   索引
    •   切片
    •   循环
    •   长度
    •   包含
  • dict 字典。
person = {"name": "mr.wu", 'age': 18}
或
person = dict({"name": "mr.wu", 'age': 18}) 
dict code

 

  常用操作:

    •   索引
    •   新增
    •   删除
    •   键、值、键值对
    •   循环
    •   长度

python的一些基础方法

  • 执行脚本传入参数

  Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:

    •   Python内部提供的模块
    •   业内开源的模块
    •   程序员自己开发的模块

  Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数

#!/usr/bin/env python
import sys
print sys.argv 
  • python中的输入

   在Python自带的解释器中输入input()和getpass()方法。

变量

  • 什么是变量?

  变量就是会变化的量

  • 什么地方会用到变量?

  在表示中间值、获取未知值、或者简化代码的时候都可以使用

  • 怎么用?

  变量的声明

  变量的赋值

  变量的命名规则

  • 变量在内存中的状态

运算

  •   算数运算

  

  •   比较运算

  

  •   赋值运算

  

  •   逻辑运算

  

  •   成员运算

  

  •   身份运算

  

  •   位运算

  

  •   运算符的优先级

  

 

#!/usr/bin/python
 
a = 60            # 60 = 0011 1100
b = 13            # 13 = 0000 1101
c = 0
 
c = a & b;        # 12 = 0000 1100
print "Line 1 - Value of c is ", c
 
c = a | b;        # 61 = 0011 1101
print "Line 2 - Value of c is ", c
 
c = a ^ b;        # 49 = 0011 0001
print "Line 3 - Value of c is ", c
 
c = ~a;           # -61 = 1100 0011
print "Line 4 - Value of c is ", c
 
c = a << 2;       # 240 = 1111 0000
print "Line 5 - Value of c is ", c
 
c = a >> 2;       # 15 = 0000 1111
print "Line 6 - Value of c is ", c
calculate code

 

流程控制和缩进  

猜价格赢奖品:
    提示输入商品的价格。
    如果高于当前商品的价格,打印“不正确,高了”
    如果低于当前商品的价格,打印“不正确,低了”
    猜对了,打印"正确"

 

初识文本的基本操作

打开文件:
  file_obj = file("文件路径","模式")
打开文件的模式有:
  • r,以只读方式打开文件
  • w,打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  • a,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  • w+,打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

读取文件的内容:

# 一次性加载所有内容到内存
obj.read()
 
# 一次性加载所有内容到内存,并根据行分割成字符串
obj.readlines()
 
# 每次仅读取一行数据
for line in obj:
  print line

写文件的内容:

obj.write('内容')

关闭文件句柄:

obj.close()

 

posted @ 2016-11-03 18:27  Eva_J  阅读(312)  评论(0)    收藏  举报