Python基础知识总结

Python 的火热度怕是大家已经早已感受到了,很多程序员将 Python 作为了他的第二语言,如果你至今还未接触任何和 Python 相关的知识,那么今天我带给你的这篇文章可以让你快速了解 Python 语法,上手做东西了。

Python 语言的特点

Python 是一种解释性语言

编译型语音:在程序执行前,会通过编译器将程序(代码)转换为机器语言(计算机可以看懂的语音),比如C语音。

解释型语音:没有编译过程,在程序执行的时候通过解释器对程序逐行解释然后直接运行。

比较:因为编译型语音在执行前已经做了编译(翻译给计算机),所以执行比较快(执行过程中不需要翻译)。

Python 是面向对象的语言

面向过程:一般就是先分析解决问题需要的步骤,然后用函数把这些步骤一步步实现,然后依次调用(比较接近计算机的思考方式)。

面向对象:把问题中的各个事物分解(抽象)成各个对象,通过对象之间交互来实现(和我们人类的思考方式更接近)。

Python 比较适合初学者

Python 有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

Python开发环境搭建

安装

Python 官网:https://www.python.org/

Python 可应用于多平台包括 Linux 和 Mac OS X。

你可以通过终端窗口输入 python 命令来查看本地是否已经安装 Python 以及 Python 的安装版本。

  • Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。)
  • Win 9x/NT/2000
  • Macintosh (Intel, PPC, 68K)
  • OS/2
  • DOS (多个DOS版本)
  • PalmOS
  • Nokia 移动手机
  • Windows CE
  • Acorn/RISC OS
  • BeOS
  • Amiga
  • VMS/OpenVMS
  • QNX
  • VxWorks
  • Psion

windows 通过 win+q 快捷键打开 python

IDLE 是 Python 软件包自带的一个集成开发环境,初学者可以利用它方便地创建、运行、测试和调试 Python 程序。

第一个 Python 程序

第一个 python 程序

在 IDLE 中输入编写 python 的第一个程序在控制台输入 hello world,接下来我们看在 windows 命令行如何执行 python.

为了在命令行执行 python 方便首先需要配置一下环境变量:

配置环境变量

启用 command line (命令行):

启用 command line

在命令行输入 python,然后编写我们的 helloworld 程序:

命令行书写python的第一个程序

Python 的数据类型

变量

变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。变量的本质是内存中一段存储空间(大小由数据类型决定),变量名和这段存储空间的地址发生关联。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

定义变量

Python 中的变量赋值不需要类型声明。

每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

等号(=)用来给变量赋值。

等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值

#!/usr/bin/python# -*- coding: UTF-8 -*-

counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串

print counter
print miles
print name

Python 标准数据类型

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元祖)
  • Dictionary(字典)

Number(数字)

  • int (有符号整型)
  • long(长整型)
  • float(浮点型)
  • complex(复数)

String(字符串)

字符串或串 (String) 是由数字、字母、下划线组成的一串字符。

在Python中字符串有三种表示方法:

Python 中表示字符串的三种方式

关于字符串的一些拼接,截断,比较等方法这里就不列出了。可以去查 API.

List(列表)

#!/usr/bin/python
# -*- coding: UTF-8 -*-

list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print(list) # 输出完整列表
print(list[0]) # 输出列表的第一个元素
print(list[1:3]) # 输出第二个至第三个的元素
print(list[2:]) # 输出从第三个开始至列表末尾的所有元素
print(tinylist * 2) # 输出列表两次
print(list + tinylist) # 打印组合的列表

输出结果(注:加号 + 是列表连接运算符,星号 * 是重复操作)

['abcd', 786, 2.23, 'john', 70.2]
abcd
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.2, 123, 'john']

Tuple(元祖)

元组是另一个数据类型,类似于List(列表)。

元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')

print(tuple) # 输出完整元组
print(tuple[0]) # 输出元组的第一个元素
print(tuple[1:3]) # 输出第二个至第三个的元素
print(tuple[2:]) # 输出从第三个开始至列表末尾的所有元素
print(tinytuple * 2) # 输出元组两次
print(tuple + tinytuple) # 打印组合的元组

输出结果:

('abcd', 786, 2.23, 'john', 70.2)
abcd
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.2, 123, 'john')

Dictionary(字典)

字典 (dictionary) 是除列表以外 python 之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用 { } 标识。字典由索引 (key) 和它对应的值 value 组成。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

print(dict['one']) # 输出键为'one' 的值
print(dict[2]) # 输出键为 2 的值
print(tinydict) # 输出完整的字典
print(tinydict.keys()) # 输出所有键
print(tinydict.values()) # 输出所有值

输出结果:

This is one
This is two
{'name': 'john', 'code': 6734, 'dept': 'sales'}
dict_keys(['name', 'code', 'dept'])
dict_values(['john', 6734, 'sales'])

Python 数据类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

函数描述
int(x [,base])将x转换为一个整数
long(x [,base] )将x转换为一个长整数
float(x)将x转换到一个浮点数
complex(real [,imag])创建一个复数
str(x)将对象 x 转换为字符串
repr(x)将对象 x 转换为表达式字符串
eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s)将序列 s 转换为一个元组
list(s)将序列 s 转换为一个列表
set(s)转换为可变集合
dict(d)创建一个字典。d 必须是一个序列 (key,value)元组。
frozenset(s)转换为不可变集合
chr(x)将一个整数转换为一个字符
unichr(x)将一个整数转换为Unicode字符
ord(x)将一个字符转换为它的整数值
hex(x)将一个整数转换为一个十六进制字符串
oct(x)将一个整数转换为一个八进制字符串

Python 控制流程

条件语句

if 判断条件1:
    执行语句1……
elif 判断条件2:
    执行语句2……
elif 判断条件3:
    执行语句3……
else:
    执行语句4……

if 语句的判断条件可以用 >(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。

由于 python 并不支持 switch 语句,所以多个条件判断,只能用 elif 来实现,如果判断需要多个条件需同时判断时,可以使用 or (或),表示两个条件有一个成立时判断条件成功;使用 and (与)时,表示只有两个条件同时成立的情况下,判断条件才成功。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

#if语句多个条件

num = 12
if num >= 0 and num <= 10:    # 判断值是否在0~10之间
    print ('[0---10]')
elif num < 20 or num > 10:    # 判断值是否在小于0或大于10
    print ('(10---20)')
else:
    print ('>=20')


# 判断值是否在0~5或者10~15之间
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):   
    print ('hello')
else:
    print ('undefine')

for 循环

computerLanguage = ['Java', 'C', 'C++', 'PHP', 'Python', 'Go', 'Swift', 'Object-C']

for language in computerLanguage:
    print(language)

while 循环

i = 10;
while(i > 0):
    print(i)
    i = i - 1

循环使用 else 语句

while 语句中使用:

i = 10;
while(i > 0):
    print(i)
    i = i - 1
else:
    print("<= 0")

for 语句中使用:

computerLanguage = ['Java', 'C', 'C++', 'PHP', 'Python', 'Go', 'Swift', 'Object-C']

for language in computerLanguage:
    print(language)
else:
    print("OtherLanguage")

break (跳出循环), continue(跳过本次循环), pass( 不做任何事情,一般用做占位语句)

函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。

def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]

函数中的关键字参数和缺省参数。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

#可写函数说明
def printinfo( name, age = 35 ):
   "打印任何传入的字符串"
   print "Name: ", name;
   print "Age ", age;
   return;

#调用printinfo函数
printinfo( age=50, name="miki" );
printinfo( name="miki" );

函数中的不定长参数(不是很常用):

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 可写函数说明
def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print "输出: "
   print arg1
   for var in vartuple:
      print var
   return;

# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );

Python 面向对象

理解面向对象编程

万事万物皆对象

我们从窗户向外望去:每棵树:每一课树都可以看成一个对象。路上每个人:每一个人也可以看成一个对象。每个人上班的事件: 可以看成一个对象。

类和对象

类则是从某一部分对象中抽象出来的一个群体,这些群体具有某些共同的特征,我们可以根据我们所需的某几个特征抽象出我们自己想要的类。

每个人都是对象,我们可以抽象出来人的共同特征,就像我们给自然界的物质分类一样(如何分类?根据特征分类)。

每个人上班的事件是对象,我们可以抽象出来上班,上班和上课就是两个类。

创建 Python 中的类和对象

创建一个 Person 类:

class Person:

    #特殊方法,构造函数,创建这个类的时候会首先调用
    def __init__(self, name, age):
        self.name = name
        self.age = age

    #定义一个方法,显示人的信息
    def displyPersonInfor(self):
        print("name:", self.name, ",  age:", self.age)

创建对象(对象就是类的具体实例):

person = Person("xiaoming", 22)

访问属性及方法:

person.displyPersonInfor()  #访问类的成员方法

print(person.name)          #访问类的属性
print(person.age)

python 对象销毁(垃圾回收)

析构函数 del ,del 在对象销毁的时候被调用,当对象不再被使用时,del 方法运行:

class Person:

    #特殊方法,构造函数,创建这个类的时候会首先调用
    def __init__(self, name, age):
        self.name = name
        self.age = age

    #定义一个方法,显示人的信息
    def displyPersonInfor(self):
        print("name:", self.name, ",  age:", self.age)

    #析构函数,对象销毁的时候调用
    def __del__(self):
        print(self.__class__.__name__ + "销毁")


xiaoming = Person("xiaoming", 22)
xiaoming.displyPersonInfor()  #访问类的成员方法

xiaoqiang = Person("xiaoqiang", 25)
xiaoqiang.displyPersonInfor()

del xiaoming
del xiaoqiang

类的继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的类型和子类型关系。

继承语法 class 派生类名(基类名): 基类名写作括号里,基本类是在类定义的时候,在元组之中指明的。

class Person:

    #特殊方法,构造函数,创建这个类的时候会首先调用
    def __init__(self, name, age):
        self.name = name
        self.age = age

    #定义一个方法,显示人的信息
    def displyPersonInfor(self):
        print("name:", self.name, ",  age:", self.age)

    #析构函数,对象销毁的时候调用
    def __del__(self):
        print(self.__class__.__name__ + "销毁")


class Student:

    def __init__(self, name, age, grade):
        Person.__init__(self, name, age)
        self.grade = grade

    def displyPersonInfor(self):
        print("i am a student, my name is " + self.name)


    def __del__(self):
        print("student析构函数调用")


xiaoming = Person("xiaoming", 22)
xiaoming.displyPersonInfor()  #访问类的成员方法

xiaoqiang = Student("xiaoqiang", 25, 3)
xiaoqiang.displyPersonInfor()

del xiaoming
del xiaoqiang