写在前面:本文适合有高级编程语言基础的读者阅读。


一、Python设计目标

  • 简单直观
  • 开源(Python源码不能加密)
  • 易理解
  • 适用于短期开发的日常任务

二、为何选择Python?

      代码量少,同样的问题,用不同的语言解决,代码量差距很明显。一般情况Python是Java的1/5。

三、Python特点

  • 面向对象,在Python中一切皆对象
  • 强大的标准库,Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外功能。
  • Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖科学计算、人工智能、机器学习、Web开发、数据库接口、图形系统等多个领域。

四、Python的优缺点

1、优点

  • 简单、易学
  • 免费、开源
  • 面向对象
  • 丰富的库
  • 可扩展性——如果需要一段关键代码运行的更快或者希望某些算法不公开,可以把这部分程序用C或C++编写,然后在Python程序中使用它们
  • ……

2、缺点

  • 运行速度——解释性语言,不像C/C++这些编译性语言执行速度比较快,因为是解释性的,执行速度相对较慢,但跨平台性较好
  • 国内市场较小
  • 中文资料匮乏

五、Python适合的领域

  • Web网站和各种网络服务
  • 系统工具和脚本
  • 作为“胶水”语言把其他语言开发的模块包装起来方便使用

六、Python不适合的领域

  • 贴近硬件的代码(首选C)
  • 移动开发:IOS、Android有各自的语言
  • 游戏:C、C++

七、Python和其他语言的对比


八、Python运行机制


      字节码文件包含.pyc和.pyo文件(.pyc优化后的文件)

九、基础语法

1、print语句

      .当我们在Python交互式环境下编写代码时,>>>是Python解释器的提示符,不是代码的一部分。

     print语句也可以跟上多个字符串,用逗号“,”隔开,就可以连成一串输出:(print会依次打印每个字符串,遇到逗号“,”会输出一个空格)

>>> print 'The quick brown fox', 'jumps over', 'the lazy dog'
The quick brown fox jumps over the lazy dog

2、Python中Unicode字符串

      为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:

print u'中文'
中文

注意: 不加 u ,中文就不能正常显示。如果中文字符串在Python环境下遇到 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释

# -*- coding: utf-8 -*-

目的是告诉Python解释器,用UTF-8编码读取源代码。但是以上两者不能同时出现,比如代码编辑第一行的注释#-*-coding:utf-8 -*-,表明以下Python代码使用utf-8编码,但输出语句若写成print u'" ..."',这样就又要让解释器使用Unicode编码输出,导致解码出错。我们应该记住以何种方式编码就应以何种方式解码,否则就很有可能出现编码错误

3、List处理

      Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种类型数据

      倒序访问:可以用 -1 这个索引来表示最后一个元素,类似,-2表示倒数第二个……

      添加元素:有两种方法,第一,使用append(),总是把新的元素添加到 list 的尾部。第二,使用insert(xx, xx)方法,它接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素。

      删除元素:pop()方法总是删掉list的最后一个元素,并且它还返回这个元素。pop(index)删除指定位置的元素。注意:如果连续多次执行pop()方法,先执行的pop()会改变list大小,后面部分元素的index会发生改变。

      修改元素:直接使用赋值语句替换即可修改。

4、tuple处理

      tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。创建tuple和创建list唯一不同之处是用( )替代了[ ]。获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素。

      也就是空tuple,直接用 ()表示。因为用()定义单元素的tuple与运算符的()有歧义,所以 Python 规定,单元素 tuple 要多加一个逗号“,”,这样就避免了歧义,而多元素 tuple 加不加这个额外的“,”效果是一样的,结尾没有,。

>>> t = (1,)
>>> print t
(1,)

Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。

      “可变的tuple”:tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变,可以将[]改为()即可保证()内部每个元素不可变。比如,我们来看一个“可变”的tuple:

>>> t = ('a', 'b', ['A', 'B'])

注意到 t 有 3 个元素:'a','b'和一个list:['A', 'B']。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到:

>>> L = t[2]

然后,我们把list的两个元素改一改:

>>> L[0] = 'X'
>>> L[1] = 'Y'

再看看tuple的内容:

>>> print t
('a', 'b', ['X', 'Y'])
为何可变?我们先看看定义的时候tuple包含的3个元素:

当我们把list的元素'A'和'B'修改为'X'和'Y'后,tuple变为:

表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。

5、if语句

      注意: Python代码的缩进规则。具有相同缩进的代码被视为代码块,下面的3,4行 print 语句就构成一个代码块(但不包括第5行的print)。如果 if 语句判断为 True,就会执行这个代码块。缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

age = 20
if age >= 18:
    print 'your age is', age
    print 'adult'
print 'END'

如果你在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车

>>> age = 20
>>> if age >= 18:
...     print 'your age is', age
...     print 'adult'
...
your age is 20
adult

若用 if else,则else后边有: 。若有多个嵌套,则可以使用 if ... 多个elif ... else ... 的结构,一次写完所有的规则:

if age >= 18:
    print 'adult'
elif age >= 6:
    print 'teenager'
elif age >= 3:
    print 'kid'
else:
    print 'baby'

elif 意思就是 else if注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接忽略,不再执行了

6、for循环

      如计算List中的平均值

L = [75, 92, 59, 68]
sum = 0.0
for score in L:
    sum += score
print sum / 4

注意:  name 这个变量是在 for 循环中定义的,意思是,依次取出list中的每一个元素,并把元素赋值给 score,然后执行for循环体(就是缩进的代码块)。这样一来,遍历一个list或tuple就非常容易了。

7、while循环

      比如要从 0 开始打印不大于 N 的整数:

N = 10
x = 0
while x < N:
    print x
    x = x + 1

while循环每次先判断 x < N,如果为True,则执行循环体的代码块,否则,退出循环。

在循环体内,x = x + 1 会让 x 不断增加,最终因为 x < N 不成立而退出循环。

8、使用break退出循环

      比如利用 while True 无限循环配合 break 语句,计算 1 + 2 + 4 + 8 + 16 + ... 的前20项的和。

sum = 0
x = 1
n = 1
while True:
    sum += x
    x = 2*x
    n = n+1
    if n > 20:
        break
print sum

9、使用continue继续循环

      比如计算0-100之间奇数的和

sum = 0
x = 0
while True:
    x = x + 1
    if x > 100:
        break
    if x % 2 == 0:
        continue
    sum += x
print sum

10、多重循环

      比如对100以内的两位数,使用两重循环打印出所有十位数数字比个位数数字小的数,例如,23(2 < 3)。

法一:

for x in [ 1,2,3,4,5,6,7,8,9 ]:
    for y in [ 0,1,2,3,4,5,6,7,8,9 ]:
        if x<y:
            print x*10 + y

法二:

for x in range(1,9):
    for y in range(x+1,10):
       print str(x)+str(y)

续下文《Python学习笔记——基础语法(下)

转载请注明出处:

http://blog.csdn.net/daijin888888/article/details/79331360




Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐