Python 入门知识

基于 Python3.x

Python 文件默认格式.py

首行默认以下命令:

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

数据类型

  • 数字

    整数 int 1,2,3

    长整数 long 1112L

    浮点数 float(小数)1.23,3.14

    复数 complex 3.14j

  • 字符串

    'abc',"abc",'''abc‘’‘

    'x'和"x" 区别不大

    '''abc‘’‘文本可以跨行

    字符串前面加 r 或者 R 表示字符串内部不需要转义,否则要用\ 转义

    支持a[0]取值

  • 布尔值

    TrueFalse

    布尔值可以用andornot运算

  • 空值

    None

  • 变量

    命名规则:开头aA_,其后可以包含aA_1

  • 常量

    不能变的变量

集合

  • 列表 list

    [1,2,3,3]

    插入 list.insert(1,'vaule')

    删除 list.pop() / list.pop(1)

  • **元组 tuple **

    (1,2,3,3)

    与列表类似,但是一旦初始化就不能再修改


  • 字典 dict

    {'a':1,'b':'vaule'}

    键值对,读取快,相当于 java 的 map

  • set

    set([1,2,3])

    键的集合,不能有重复的,相当于 java 的 set

逻辑语句

  • if ... : ... elif ... : ... else : ...
  • for x in xs : ...
  • while x : ...

自定义函数

def fun(n)
    return n
  • return

可以没有 return,默认返回 None

可以 return 多个值,实际上返回的是一个 tuple

  • pass

不想执行任何语句,但是为了符合语法规范,可以用 pass 当做占位符

def fun()
    pass
  • 抛出异常
raise TypeError('an error')

其中 TypeError 需要继承自error或者Exception

  • 参数

位置参数

def fun(arg)
    pass

默认参数

def fun(arg0,arg1 = 1)
    pass

注意 默认参数必须是参数中后面的几位;默认值必须不可变,如 int,string 等

可变参数

def fun(arg,*args)
    pass

*args 表示参数个数可变,可以输入 list/tuple 等,或者依次输入多个参数,用逗号分隔

关键词参数

def fun(arg,**keywords)
    if 'city' in kw:
        pass

**keywords 表示接受关键词作为参数传入,可以传入 dict,或者依次输入多个关键词参数

命名关键词参数

def fun0(args,*,name,age)
    pass
def fun1(arg.*args,name,age)#如果命名关键词前面有可变参数,则不用*分隔
    pass

限制输入的关键字,限制只有 name 和 age 作为关键词参数

使用其他文件的函数

#使用时 sys.fun()
import sys
#使用时直接 fun()
from xxFile import fun
form sys import *
form sys import fun

  • 定义类
class AClass(object):
    '''doc for AClass
    you can use this by
    AClass.__doc__'''
  def __init__(self):
      #默认的初始化方法
      pass
  def aFun(self):
      pass
#创建类对象
a = AClass()
#调用方法
a.aFun()

所有的类方法必须至少有一个参数,推荐命名为 self,系统会自动传入类对象,无需手动传入。

  • 继承
class Father(object):
  def __init__(self):
    print("father")
  def say(self):
    print("i am f")

class Child(Father):
  def __init__(self):
    #子类方法不会自己调用父类方法,需要手动调用
    super(Child,self).__init__()
    #调用父类方法 2:
    #Father.__init__(self)
    print("child")
  def say(self):
    print('i am c')
  def go(self,where):
    print('go to %s'%where)

c = Child() #father child
c.say() #i am c
c.go('home') #go ro home

子类继承父类,则需要在子类定义时传入父类

子类如果有与父类同名方法,则优先调用子类方法,除非子类特别调用父类的方法

有想法?欢迎通过邮件讨论。

目录