Python基础

Python简介

python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。

Python适合开发哪些类型的应用呢?

  1. 首选是网络应用,包括网站、后台服务等等;
  2. 其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;
  3. 另外就是把其他语言开发的程序再包装起来,方便使用。

Python的优缺点

优点:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.

缺点:运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。但是大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。

Python的解释器种类

  • Cpython
    Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
  • Jyhton
    Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
  • IronPython
    Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
  • PyPy(特殊)
    Python实现的Python,将Python的字节码再编译成机器码。
  • RubyPython、Brython …

Python头部注释

如果想要像执行shell脚本一样执行python脚本,例:./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,#!/usr/bin/env python3env是兼容unix路径的),在linux上其实不需要。如果不加,则需要指定解释器执行 python hello.pypython解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),ascii码无法表示中文,所以要用 # -*- coding: utf-8 -*- 来显式地告诉解释器,用什么编码来执行源代码。

注释

当行注释:# 被注释内容
多行注释:””” 被注释内容 “”” 或 ‘’’ 被注释内容 ‘’’

导入模块

Python有大量的模块,从而使得开发Python程序非常简洁。类库包括三类:

  • Python内部提供的模块
  • 业内开源的模块
  • 程序员自己开发的模块

导入模块用 import 关键词,import 会找找到对应的.py文件,并将文件内容导进来。比如说,有一个lib.py文件,有一个test.py文件

lib.py的内容如下:

#!/usr/bind/env python3
# -*- coding: utf-8 -*-

print('lib')

test.py的内容如下:

#!/usr/bind/env python3
# -*- coding: utf-8 -*-

import lib

print('test')

执行test.py后,输出结果是 lib ,test ,先输出lib ,证明已经把lib.py的内容导入了test.py文件。

pyc文件

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

查看对象的类,或对象所具备的功能

  • type()方法,显示类型
  • dir()方法,显示类的各种功能
  • help(type()),显示详细功能

流程控制和缩进

条件语句

user = input("please input name")
pwd = input("please input pwd")

if user == "fanda":
    print("right")
elif pwd =="123":
    print("error")
else :
    print("other")

注意:input() ,用户输入的内容都是字符串,就算输入123,也会变成“123”

循环语句

import time

n = 1
while True:
    print(n)
    n +=1
    if n >30:
        break
    time.sleep(1)
print("end")

上述代码当 n>30时,会退出循环,break 用于退出所有循环。

while True:
    print(123)
    time.sleep(1)
    continue
    print(456)
    time.sleep(1)

上述代码只会输出123continue 只会退出当前的循环,会继续下一次循环。

练习题

例子:使用while循环输出 1 2 3 4 5 6 8 9 10

n = 1
while n < 11:
    if n==7:
        n+=1
        continue
    print(n)
    n+=1

注意 in==7 时,n+=1,不然会一直返回7,下面的代码 执行不了

例子2:求1-100的所有数的和

n = 1
sum = 0
while n < 101:
    sum+=n
    n+=1
print(sum)

例子3:输出 1-100 内的所有奇数

n = 1
while n < 101:
    if n % 2 != 0:
        print(n)
    n += 1

例子4:求1-2+3-4+5 … 99的所有数的和

n = 1
total = 0
while n < 100:
    if n%2 ==0:
        total-=n
    else:
        total+=n
    n+=1
print(total)

例子5:用户登录(三次机会重试)

n =0
while n<3:
    user = input("please input name")
    if user == "fanda":
        print("success")
        break
    n+=1
print("程序结束")