七的博客

Python2.7快速入门

Python

Python2.7快速入门

最近一段时间尝试学习了下 Python 语言,这门语言在编写代码的时候比较简洁,这一点比较吸引我。 从学习成本上来说, Python 的学习成本不是很高,就算是没有编程基础的人也可以比较快速的上手。

写 Python 有那种以前我写 PHP 那种感觉,就是快,不用被条条框框限制。 不过这个也是因为这两门语言都是动态的脚本语言导致。

1. Python 简介

Python 是一门高级、通用型的编程语言 , 1991年由Guido van Rossum于创建。 Python 代码通常使用简洁、易读的语法,同时它还有强大的标准库。可以看出 Python 语言比 PHP、Java 都要出现的更早,这两门语言直到 1995 年才发布。

不过每种语言都有自己的优缺点以及使用场景,Python 更加适合开发一些小工具,数据分析等工具。 不过也有像豆瓣这种整个网站使用 Python 来开发的案例。

Python 的特点:

  • 语法比较简洁,实现相同的功能代码量比其他语言写更少。
  • 动态类型,不用先声明类型,这样开发速度快。
  • 标准库很丰富,第三方库就更不用说了。
  • 支持跨平台运行。
  • 解释型语言,调试很方便,不用每次都去编译。

2. HelloWorld

先来看一个 Python2.7 的 HelloWorld。

print "Hello, World!" 

把上面这一行代码保存成一个文件 HelloWorld.py ,然后直接命令行运行:

python HelloWorld.py

你就可以看到 Hello, World! 的输出。 你也可以直接打开命令行直接执行这行语句:

python

然后再输入 print "Hello, World!" 这行语句也可以看到输出。

需要注意的是,Python 的语句不通过 ; 进行换行切分。 同时 Python 中的缩进也不能乱按,缩进是用来控制代码层级结构的。

3. 基本的语法

3.1 注释

注释跟 shell 中的注释一样,使用 # 。

# 这是一行注释

3.2 缩进跟代码块

Python 使用缩进来定义代码块,而不是 {} 来定义代码块,看一个 if else 的例子:

if x > 0:
    print "正数"
else:
    print "负数"

其他一些语法的写法:

if(x > 0){
  print "正数"
}else{
  print "负数"
}

注意看上面的 Python 代码层级关系是通过缩进来实现的,你可以实现 Tab 进行缩进,也可以使用空格进行缩进。

3.3 变量声明

Python是动态类型脚本语言,不需要指定变量类型,直接用就行。

x = 5   # 整数
y = "Hello" # 字符串
z = 3.1415 # 浮点数
b = True #布尔值

3.4 定义函数

定义函数也比较简单,直接使用 def 关键字定义函数即可。

def function_name_123(name_parameter):
    return "Hello, " + name_parameter

上面定义了一个函数名为 function_name_123() 的函数。函数有一个入参 name_parameter,入参的类型是没有限制的,可以传入任意类型。函数返回值也没有显式声明,现在返回的是字符串。

3.5 数据类型

Python 目前有 5 种标准的类型

  • 数字类型
  • 字符串类型
  • 列表类型
  • 元祖类型
  • 字典类型

还有一部分扩展的类型。

3.5.1 数字类型

数字类型又分为: - int ,有符号整形。 - long, 长整型。 - float, 浮点型。 - complex, 复数类型。

number1 = 100
number2 = 100000000000000000000000
number3 = 3.14
number5 = 3.14j

3.5.2 字符串类型

字符串就是是由字母、数字、下划线等组成的一串字符。

str = "这是一个字符串"

3.5.3 列表类型

Python的列表类似于 Java 的 List。

testList  = [1, 2, 3]

3.5.4 元组类型

元组跟 List 其实差不多,区别是元组初始化之后是不能变更的,也就是不能做更新操作。

元组使用 () 包裹起来。

testTuple =  (1, 2, 3)

3.5.5 字典类型

Python的字典类似于 Java 的 HashMap。

dict = {'key1': 'value1','key2': 'value2'}

3.5.6 日期时间类型

Python 中处理日期和时间主要使用 datetime 模块。所以使用的时候需要先导入。

import datetime

now = datetime.datetime.now()
print now   # 输出当前日期和时间,可能你会看到 yyyy-MM-dd HH:mm:ss.SSS 这种格式

### 创建指定日期和时间
specific_date = datetime.datetime(2023, 8, 20, 14, 30)
print specific_date  # 输出 yyyy-MM-dd HH:mm:ss 格式

### 格式化日期
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print formatted_date  # 输出格式化后的日期字符串


### 解析日期
date_string = "2019-01-01 14:30:00"
parsed_date = datetime.datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(parsed_date)  ## 这里是日期对象

3.6 条件语句

条件语句也很简单,跟其他语言类似,只是条件不需要用 () 包裹起来。

x = 5


if x > 3:
    print "x 大于 3"
elif x == 3:
    print "x 等于 3"    
else:
    print "x 小于 3"

条件语句支持:

  • > 大于
  • == 等于
  • < 小于
  • >= 大于等于
  • <= 小于等于

3.7 循环

循环跟 C 系的语言语法差不多。

# For循环, 一共会循环5次
for i in range(5):
    print i   # 这里会依次输出 0 1 2 3 4

# While循环
count = 0
while count < 5:
    print count   # 这里会依次输出 0 1 2 3 4
    count += 1

下面几个关键字也支持:

  • break 跳出循环
  • continue 继续下一次循环
  • pass 什么都不做,这是 Python特有的

3.9 异常处理

异常处理应该也是模仿 C++ 的写法。 使用 try except finally 语法。

try:
    result = 10 / 0
except ZeroDivisionError:
    print "不能除0操作"
else:
    print "如果没有异常会执行这里的代码"
finally:
    print "这一行代码总是会被执行"

3.10 导入模块

比如要导入内置的模块或者是第三方的模块,可以使用 import 关键字。

import math   # 这是导入整个 math 模块
print math.sqrt(16)


# 导入模块中的特定函数或类
from math import sqrt   # 从 math 模块中只导入 sqrt 函数,这样可以直接使用  sqrt() 方法 
print sqrt(16)

3.11 面向对象编程

class Animal:
    # 这是一个类的属性
    class_attribute = "这是一个类的属性"

    # 初始方法,类似于构造函数
    def __init__(self, name):
        self.instance_animal_name = name

    # 实例方法,注意类方法第一个参数是 self,代表实例本身
    def instance_method(self):
        return "动物的名称是" + self.instance_animal_name

    # 类方法,注意类方法第一个参数是 cls
    @classmethod
    def class_method(cls):
        return cls.class_attribute

    # 静态方法
    @staticmethod
    def static_method():
        return "这是一个静态方法"


if __name__ == '__main__':
    dog = Animal("大黄")
    print dog.instance_method()    #输出【动物的名称是大黄】
    print dog.instance_animal_name #输出【大黄】

    print Animal.class_attribute  #输出【这是一个类的属性】
    print Animal.class_method()   #输出【这是一个类的属性】 
    print Animal.static_method()  #输出【这是一个静态方法】

4. 踩坑点

4.1 中文支持

Python 2.7 默认是不支持处理中文的,比如下面这个代码会报错:

print "你好"

你可能会看到下面的错误:

File "xxxxx.py", line 1
SyntaxError: Non-ASCII character '\xe4' in file xxxxx.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

最简单的处理方式是在源文件开头添加编码:

# -*- coding: utf-8 -*-
print "你好"

4.2 IDE 函数补全提示不太好

Python是动态语言,在补全提示上肯定没有静态语言那么好用的 ,只能自己稍微记住一点 API 。