Python简介及入门

来源:互联网 发布:cn域名备案吗 编辑:程序博客网 时间:2024/05/29 09:25

博客迁往:新地址 (点击直达)

新博客使用markdown维护,线下有版本库,自己写的所以会定时更新同步,同时提供更好的导航和阅读体验
csdn对markdown支持不好,所以旧版不会花时间进行同步修订,抱歉



---------------------------------

Python简介及入门

python

为什么是python

选择自己喜欢的语言,这往往不容易,更多的是根据需求

话说,之前是java,大学用了三年+实习半年,后来入职做测试开发后,碰到了python

到最后,转python开发了

写起来快,缩进,不用打花括号,省手指,读起来舒服…..

喜欢,貌似不需要什么太牛的理由,用着顺手舒服就行

什么语言之争,编辑器之战啥的,能忽略就忽略吧,能无视就无视吧,工具,够用,用这舒服就ok了,浪费口水精力争来争去图个啥呢

Life is short, I use python!

简介

python介绍: 到官网自个看

有兴趣可以看看: 解释性语言+动态类型语言+强类型语言

优点缺点: 自己google

国际惯例

交互模式:(主要拿来试验,可以试试 ipython)

$python>>> print 'hello world'

脚本

#!/usr/bin/env pythonprint 'hello world'

环境及其他

基本安装: 自己google[安装和配置一搜一大把,基本技能,不解释,貌似很久之前我也写了一篇http://blog.csdn.net/wklken/article/details/6311292

环境:

建议python2.7 + easy_install + pip + virtualenv + ipython

开发工具:

vim/sublimetext2/eclipse+pydev/pycharm建议初学idle或者pydev吧,用着顺手就行,

关于编码风格:

谷歌的:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html

中文: http://www.bsdmap.com/articles/zh-google-python-style-guide/


入门

不扯,开始

缩进

Python 函数没有明显的 begin 和 end,没有标明函数的开始和结束的花括号。唯一的分隔符是一个冒号 (:),接着代码本身是缩进的。

例子:

#函数def func(value):    print value  #缩进    if value == 1:        value += 1    elif value == 2:        pass    else:        value += 10

标识符

变量是标识符的例子。 标识符 是用来标识 某样东西 的名字。在命名标识符的时候,你要遵循这些规则:

1.python中的标识符是区分大小写的。

2.标示符以字母或下划线开头,可包括字母,下划线和数字,大小写敏感

3.以下划线开头的标识符是有特殊意义的。

  • 以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;
  • 以双下划线开头的(__foo)代表类的私有成员;
  • 以双下划线开头和结尾的(foo)代表python里特殊方法专用的标识,如init()代表类的构造函数。

4.标识符不能是保留字

and            elif        global   or    yieldassert         else        if       passbreak          except      import   printclass          exec        in       raisecontinue       finally     is       returndef            for         lambda   trydel            from        not      while

变量

赋值语句

  • 赋值语句建立对象引用值
  • 变量名在首次赋值时会被建立
  • 变量名在引用前必须先赋值,不能引用未声明赋值的变量

赋值方式

  • 简单赋值

Variable(变量)=Value(值)

s = ‘spam’
  • 多变量赋值

python中原始的元组和列表赋值语句形成,最后已被通用化,以接受右侧可以是是任何类型的序列,只要长度相等即可。注意,长度一定相等

Variable1,variable2,...=Value1,Value2,...

s,h = ‘a’,’b’  元组赋值,位置性  【常用】[s,h] =[‘a’,’b’] 列表赋值,位置性a,b,c,d = ‘spam’ 序列赋值,通用性a,*b = ‘spam’ 拓展序列解包(python3)
  • 多目标赋值

a=b=variable

s = h = ‘spam’ 多目标赋值

注意:多个变量内存中指向同一对象,对于可变类型需要,修改一个会对其他造成影响

  • 自变赋值

如+=,-=,*=等。

在自变赋值中,python仅计算一次,而普通写法需计算两次;

自变赋值会修改原始对象,而不是创建一个新对象。

s +=42 增强赋值x += y

优点:

程序员输入更少左侧只需计算一次,优化技术自动原处修改,更快l +=[] 原处修改l = l+[] 复制,生成新的对象

运算符

一个表达式可以分解为运算符和操作数

运算符 的功能是完成某件事,它们由如+这样的符号或者其他特定的关键字表示

运算符需要数据来进行运算,这样的数据被称为 操作数

运算符优先顺序列表(从最高到最低)

运算符   描述'expr'  字符串转换{key:expr,...}  字典[expr1,expr2...]    列表(expr1,expr2,...)   元组function(expr,...)  函数调用x[index:index]  切片x[index]    下标索引取值x.attribute 属性引用~x  按位取反+x,-x 正,负x**y    幂x*y,x/y,x%y 乘,除,取模x+y,x-y   加,减x<<y,x>>y 移位x&y 按位与x^y 按位异或x|y 按位或x<y,x<=y,x==y,x!=y,x>=y,x>y   比较x is y,x is not y 等同测试x in y,x not in y 成员判断not x   逻辑否x and y 逻辑与x or y  逻辑或lambda arg,...:expr Lambda匿名函数

结合规律

运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算

计算顺序

默认地,运算符优先级表决定了哪个运算符在别的运算符之前计算。然而,如果你想要改变它们的计算顺序,你得使用圆括号。好的做法:默认对复杂的运算加括号,而不是依赖于默认结合和计算顺序

真值

真值测试

  • 任何非零数字或非空对象都为真
  • 数字零,空对象以及特殊对象None都为假
  • 比较和相等测试都会递归地运用到数据结构中
  • 比较和相等测试会返回True或False

真值表

对象/常量   值""  假"string"    真    0   假2>=1    真-2<=-1  真()空元组 假[]空列表 假{}空字典 假None    假

布尔表达式

三种布尔表达式运算符

x and yx or ynot x

比较

  • 数字通过相对大小进行比较
  • 字符串时按照字典顺序的,一个字符一个字符比较
  • 列表和元组从左到右对每部分的内容进行比较
  • 字典通过排序后的键值列表进行比较
  • 数字混合类型比较在python3是错误的,但是python2.6支持,固定但任意的排序规则

布尔数

  • 有两个永远不改变的值True,False
  • 布尔是整型的子类,但不能被再继承
  • 没有nonzero()方法的对象的默认值是True
  • 对于值为0的任何数字或空集,值False
  • 在数学运算中,Bollean值的True和False分别对应于1和0

基本控制流

if

基本的条件测试语句,用来判断可能遇到的不同情况,并针对不同的情况进行操作

基本形式

if <条件>:   <语句>elif <条件>:   <语句>else:   <语句>

注意

python根据缩进判断, elif和else部分是可选的

例子:

a = 1b = 2c = 3;d=4 #两个放一句用分号隔开,不过建议分行if a < b and c < d:    print("branch a")elif a == b:    print("branch b")else:    print("branch c")

switch

python 本身没有 switch 语句,若需要,用if/elif/else实现完成同样的工作,某些情况可以考虑用字典

也可以用dict的形式

if/else三元运算符

A = ((X and Y) or Z)A = Y  if X else Z例: a = ‘t’ if x else ‘a’

for

  • 基本语法

循环控制语句,可以用于循环遍历某一序列

else块可选,在循环终止的时候执行,若是break终止循环,else不执行

格式:

for <对象变量> in <对象集合>:    if<条件>:       break    if<条件>:       continue    <其他语句>else:    <其他语句>

注意:

1.对象集合可以是列表,字典以及元组等2.for..in循环对于任何序列都适用3.for遍历一个字典时,遍历的是字典的键
  • rang & xrange

可以通过range()函数产生一个整数列表,完成计数循环

range([start,] stop[, step])start可选参数,起始数stop终止数,若为x,产生从0-(x-1)的整数列表step可选参数,步长,未写默认为1

range(1,5) 包含序列为 [1,2,3,4]

xrange和range区别

(python3.x的可无视)

在Range的方法中,它会生成一个list的对象,但是在XRange中,它生成的却是一个xrange的对象,当返回的东西不是很大的时候,或者在一个循环里,基本上都是从头查到底的情况下,这两个方法的效率差不多。但是,当返回的东西很大,或者循环中常常会被Break出来的话,还是建议使用XRange,这样既省空间,又会提高效率。

>>> print range(1, 5)[1, 2, 3, 4]>>> print xrange(1, 5)xrange(1, 5)

在上面语句中,range返回了一个普通List,而xrange返回了一个特定的xrange类型的对象。由于 xrange 方法也创建整数 list(其使用相同参数),所以它与 range 方法非常相似。但是,xrange 方法仅在需要时才在 list 中创建整数。当需要迭代大量整数时,xrange 方法更适用,因为它不会创建极大的 list,那样会消耗大量计算机内存。

while

与if语句类似,含一个条件测试语句,循环,允许重复执行一个语句块。

可选else语句块,同for的else块。

格式:

while <条件>:   if <条件>:      break   if <条件>:      continue   <其他语句>else:   <语句>

说明:

  • while循环条件变为False的时候,else块才被执行
  • 若是使用break结束循环,while可选的else块不执行
  • python没有do while或do until循环语句

break & continue & pass

break,终止循环语句,停止循环,若是for/while循环中终止,其else不执行

continue,结束当前,进入下一轮循环 - 跳到最近所在循环的开头处(来到循环首行)

pass 什么事也不做,只是空占位语句,它用于那些语法上必须要有什么语句,但程序什么也不做的场合

循环else块 :只有循环正常离开时才会执行,即

如果你从for或while循环中break终止 ,任何对应的循环else块将不执行。记住,break语句也可以在for循环中使用

其他

编写循环的技巧:

在迭代过程中修改迭代序列不安全(只有在使用链表这样的可变序列时才会有这样的情况)。如果你想要修改你迭代的序列(例如,复制选择项),你可以迭代它的复本。使用切割标识就可以很方便的做到这一点

>>> for x in a[:]: # make a slice copy of the entire list...    if len(x) > 6: a.insert(0, x)

在字典中循环时,关键字和对应的值可以使用 iteritems() 方法同时解读出来

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}>>> for k, v in knights.iteritems():...     print k, v...gallahad the purerobin the brave

在序列中循环时,索引位置和对应值可以使用 enumerate() 函数同时得到。

>>> for i, v in enumerate(['tic', 'tac', 'toe']):...     print i, v

The end!

To be continue

wklken

Email: wklken@yeah.net

Blog: http://blog.csdn.net/wklken

2013-03-16

转载请注明出处,谢谢

0 0
原创粉丝点击