Python2.7快速入门
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 。