写在前面
本文讲简单介绍Python这门语言,旨在帮助有编程背景的同学,快速对这门语言的语法有一个大致了解。
解释型语言
从类型上看,Python属于脚本语言。C#或Java的代码在运行前需要编译,把该语言转换为机器或虚拟机可以识别的中间语言,然后才能运行。Python和JavaScript这种脚本语言,运行时跳过编译,由解释器实时编译执行。
解释器支持Mac/Linux/Windows各种操作系统,也正是因为此,所以当说“安装Python”时,我们是在装“Python解释器”。解释器安装完毕后,即可以直接进入解释器,交互式的一个语句一个语句的输入并观察输出,也可以直接将编写好的整段语句保存为文件,由解释器直接解析文件运行。所以文件相当于代替我们一行行的进行输入,对于常规的自动化操作,一次编写即可常年使用。
Python编程语言
废话少说,我们先看一个典型的Python文件:
class Book:
def __init__(self, name):
self.name = name
def print(self):
print(self.name)
def New(name):
return Book(name)
(1)
Python最直观的特点就是没有用花括号({, })来作为语句的边界,而是纯粹依赖编写代码时的缩进。写代码时也就不必纠结开括号在行末还是下一行,或者结尾是否有分号等。Python的代码也因此变得整齐干净许多。
(2)
定义一个类,需要用到关键字class
class Book:
如果需要继承一个类,只需要在冒号前用括号添加父类即可:
class SciFi(Book):
(3)
Python中声明变量不需要类型,Python是弱类型语言,所有变量的类型均在运行时确定。
a = 18 # integer
b = True # boolean
c = "hello" # string
当一个变量在类中时,不分静态变量或实例变量,对两种参数可以同时操作,而且值不会互受影响。
class Book:
name = ''
Book.name = 'not a book'
book = Book()
book.name = 'Harry Potter'
print(Book.name) # 'not a book'
Python的单行注释以#开头,多行注释以多个#开头……或者用两行"""(三引号)包住。
(4)
定义函数时,由关键字def
声明:
def print(self):
print(self.name)
刚开始我以为,self
相当于其他语言中的this
。当第一个参数为self
关键字时,该函数为实例函数,否则该函数即为静态函数。后来才明白,self
并不是关键字,Python里面也天生不分类函数或静态函数,只不过在你用一个类的实例去调用这个方法时,它会自动把实例当做第一个参数穿进去。所以是self
或是this
都对实际调用没所谓。
book = Book.New('Harry Potter')
book.print() # Harry Potter
Book.print(book) # Harry Potter
定义函数同样需要小心缩进,缩进决定了函数是否属于当前类。
(5)
另外,Python的类中还有一些系统内置的函数,可以选择性的进行重载,这些函数以两个下划线开始和结束:
def __init__(self, name): # 定义了一个构造函数,声明实例化这个类时需要传入一个参数`name`。
self.name = name # self.name是成员变量,name是函数参数
def __str__(self): # 内置函数,相当于C#中的ToString(),用于设置实例的输出格式。
return self.name
我们把上面这段代码保存为文件book.py
,后缀名.py
表示这是一个Python文件。我们再写一个稍复杂的文件,这个文件将输出今天的日期,以及一个书架上所有的书。
(6)
为了打印日期,我们需要系统内置库datetime
和方法datetime.date.today()
import datetime
print(datetime.date.today())
import
关键字用于引用其他文件(包)中的资源,相当于using
(c#)或require
(js)。
(7)
接着我们从刚才的文件book.py
中引用类Book
,并基于此构建一个新类Shelf
from book import Book
class Shelf:
books = []
def add(self, name):
book = Book(name)
self.books.append(book)
def print(self):
while len(self.books) > 0:
book = self.books.pop()
book.print()
def NewShelf(books):
shelf = Shelf()
names = []
for book in books:
if book not in names:
shelf.add(book)
names.append(book)
return shelf
这个类提供了两个类函数 add
和print
,分别用于添加图书和输出。另外维护了一个数组(array):self.books
。Python中的数组操作非常简洁高效,这里不多介绍。
(8)
函数print
和NewShelf
分别举例了Python中的控制语句:if, for 和 while。
def NewShelf(books):
shelf = Shelf()
names = []
for book in books:
if book not in names:
shelf.add(book)
names.append(book)
return shelf
可以看出,因为缩进的存在,代码逻辑非常清晰。for ... in ...
替代了其他语言里的for(;;)
和foreach .. in ..
,直接使用时可当做foreach
使用,需要数组指针时,使用关键字range
生成指针即可:
for i in range(len(books)):
book = books[i]
(9)
最后我们来实例化Shelf
并输出书单。
#此处开始执行
book_list = ['春秋', '诗经', '论语', '诗经']
shelf = Shelf.NewShelf(book_list)
print(datetime.date.today())
shelf.print()
由于这个文件是我们最终的执行文件,在这一段前的“大段”代码都用于定义类Shelf
,因此真正的脚本运行在此处开始。
保存两个文件后,在命令行中执行:
python test.py
即可运行程序,并得到输出结果:
2018-03-01
论语
诗经
春秋
总结
快速回顾一下Python语法
- 缩进来控制代码结构
- 变量无需声明
- 弱类型
- 面向对象(类、实例、继承)
- 类函数和
self
Python从语法角度来讲,简洁清晰,写起来很舒服,读起来也很轻松。代码、模块的复用变得很高效,通过包管理工具pip
,更是可以随时把别人写好的模块“信手拈来”。种种这些,使它变成了许多人入门编程的首选语言。
最后以一句流传于Python程序员之中的名言结束:Life is short, you need Python. ——人生苦短,我用Python
网友评论