python开发技术详解的学习笔记

一、基本的语法
1、模块的导入
import **

import sys
sys.path #返回的目录列表
sys.argv #自带参数、返回的文件名

from import *

from sys import path
print path

2、使用空行分隔代码:空行也是程序代码的一部分
3、使用“;和\用作换行
4、给多个变量赋值

a=(1,2,3)
(x,y,z)=a
print x,y,z
5、全局变量与局部
_a=1
_b=2
def add ():
global _a
_a=3
return “_a+_b=”,_a+_b
def sub ():
global _b
_b=4
return “_a-_b=”,_a-_b
print add()
print sub()
输出
(‘_a+_b=’, 5)
(‘_a-_b=’, -1)
(1). 函数定义了本地作用域,而模块定义的是全局作用域。
(2). 如果想要在函数内定义全局作用域,需要加上global修饰符
(3). global—将变量定义为全局变量。可以通过定义为全局变量,实现在函数内部改变变量值。
6、const的用法

class Const(object):
    class ConstError(TypeException): pass
    def __setattr__(self, key, value):
        if self.__dict__.has_key(key):
            raise self.ConstError, "Changing const.%s" % key
        else:
            self.__dict__[key] = value

    def __getattr__(self, key):
        if self.__dict__.has_key(key):
            return self.key
        else:
            return None
import sys
sys.modules[__name__] = Const()

类定义一个方法setattr(),和一个异常类型ConstError(继承自TypeError)。调用类自带的字典dict,判断自定义的常量是否在字典中,如果字典中包含此常量,将抛出异常,如果没有,给新创建的常量赋值。最后两行代码是把const类注册到sys.modules这个全局字典中
7、id(i):查看变量的id号;type(i):i数据类型

>>> i=1
>>> print type(i)
<type 'int'>
>>> print id(i)
13204072

8、单引号、双引号、三引号的用法

sr="'he say"' hello world!"'

>>> print sr
'he say hello world!"

python中不支持自增、自减的功能,A**B表示幂次方
9、捕获原始输入:input()和raw_input()
input()不支持输入的字符串
10、range()函数生成迭代集合,返回的是一个列表
xrang()返回的是一个xrange()对象

xrang([start,]stop [,step])>xrange object

#冒泡排序法,需要测试,程序没有测试成功
def bubbleSort (numbers):
    for j in xrange(len(numbers)-1,-1,-1):
        for i in xrange(j):
                if numbers[i]>numbers[i+1]: 
                    numbers[i],numbers[i+1]=numbers[i+1],numbers[i]
        print numbers
def main ():
    numbers=[23,12,9,15,6]
    bubbleSort(numbers)
if __name__=='__main__':
    main()

11、
(1)、元组:tuple_name[m:n]

tuple=("apple","banana","grape","orange")
>>> print tuple[-1]
orange
>>> print tuple[-2]
grape
>>> tuple2=tuple[1:3]
>>> print tuple2
('banana', 'grape')
>>> tuple3=tuple[0:-2]
>>> print tuple3
('apple', 'banana')

(2)、list的用法
append()后接一个、insert(,)插入、remove()移除、pop()删除最后一个进入列表的

>>> list=["apple","banana","grape","orange"]
>>> list.append("water")
>>> list.insert(1,"grapefruit")
>>> list.remove("grape")
>>> print list
['apple', 'grapefruit', 'banana', 'orange', 'water']
>>> print list.pop()
water
>>> print list
['apple', 'grapefruit', 'banana', 'orange']

sort()排序、reversed()反转
list的用法表
12、字典
(1)、代码中书写的顺序不是字典的实际存储顺序。按照每个元素的Hashcode值进行排列

>>> dict={"a":"apple","b":"banana","g":"grape"}
>>> print dict
{'a': 'apple', 'b': 'banana', 'g': 'grape'}
>>> dict={"a":"apple","g":"grape","b":"banana"}
>>> print dict
{'a': 'apple', 'b': 'banana', 'g': 'grape'}

(2)、字典的访问
删除时del()而不是remove()、字典的操作是对索引的操作
(3)、字典的方法
a、Key()和values()方法:返回Key()和values()的列表

>>> dict={"a":"apple","b":"banana","c":"grape","d":"orange"}
>>> print dict.keys()
['a', 'c', 'b', 'd']
>>> print dict.values()
['apple', 'grape', 'banana', 'orange']

b、获取values的值:dict.get(“c”)
c、update()方法

>>> D={"key1":"value1","key2":"value2"}
>>> E={"key3":"value3","key4":"value4"}
>>> for k in E:
    D[K]=E[K]`

e、setdefault方法

>>> dict={}
>>> print dict
{}
>>> dict.setdefault("a","default")
'default'
>>> print dict
{'a': 'default'}
>>> 

f、copy方法:直接覆盖

>>> dict={"a":"apple","b":"banana"}
>>> dict2={"c":"grape","d":"orange"}
>>> dict2=dict.copy()
>>> print dict2
{'a': 'apple', 'b': 'banana'}

g、字典的排序:
sorted(data, cmp=None, key=None, reverse=False)

data为数据

cmp和key均为比较函数

reverse为排序方向,True为倒序,False为正序

复杂列表

>>> student_tuples = [
    ('john', 'A', 15),
    ('jane', 'B', 12),
    ('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2])   # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

如果列表内容是类的话,

>>> class Student:
        def __init__(self, name, grade, age):
            self.name = name
            self.grade = grade
            self.age = age
        def __repr__(self):
            return repr((self.name, self.grade, self.age))
>>> student_objects = [
    Student('john', 'A', 15),
    Student('jane', 'B', 12),
    Student('dave', 'B', 10),
]
>>> sorted(student_objects, key=lambda student: student.age)   # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

此外,Python提供了operator.itemgetter和attrgetter提高执行速度

>>> student ={("xiaoming",60),("daxiong", 20),("maodou", 30)}
>>> sorted(student, key=lambda d:d[1])
[('daxiong', 20), ('maodou', 30), ('xiaoming', 60)]
>>> sorted(student, key=itemgetter(1))
[('daxiong', 20), ('maodou', 30), ('xiaoming', 60)]
sorted(student, key=itemgetter(0,1))
[('daxiong', 20), ('maodou', 30), ('xiaoming', 60)]

operator.methodcaller()函数会按照提供的函数来计算排序。
首先通过count函数对”!”来计算出现次数,然后按照出现次数进行排序。

>>> messages = ['critical!!!', 'hurry!', 'standby', 'immediate!!']
>>> sorted(messages, key=methodcaller('count', '!'))
['standby', 'hurry!', 'immediate!!', 'critical!!!']

h、deepcopy()深拷贝:拷贝所有是的数据和引用(引用相当于指针)
copy()浅拷贝:只拷贝数据

>>> import copy
>>> dict={"a":"apple","b":{"g":"grape","o":"orange"}}
>>> dict2=copy.deepcopy(dict)
>>> dict3=copy.copy(dict)
>>> dict2["b"]["g"]="orange"
>>> print dict2
{'a': 'apple', 'b': {'g': 'orange', 'o': 'orange'}}
>>> dict3["b"]["g"]="orange"
>>> print dict3
{'a': 'apple', 'b': {'o': 'orange', 'g': 'orange'}}

I、sys.modules模块:记录导入的新的模块
这里写图片描述
二、模块与函数
1、模块的属性
三、字符串与正则表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值