Python入门

作者: 趙小陽 | 来源:发表于2018-03-02 18:12 被阅读31次

写在前面

本文讲简单介绍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

这个类提供了两个类函数 addprint,分别用于添加图书和输出。另外维护了一个数组(array):self.books。Python中的数组操作非常简洁高效,这里不多介绍。

(8)

函数printNewShelf分别举例了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

相关文章

网友评论

    本文标题:Python入门

    本文链接:https://www.haomeiwen.com/subject/lyaaxftx.html