今天第一次写博客 呃 以后也会常写吧 并不知道该怎样写啊
先写一下今天学到的东西吧 应该能加强一下记忆吧 也有一些以前的东西
时间真的很少啊 没做什么一天就要过去了
首先是一些比较杂乱的知识
加入编码 能够显示中文 也能够用中文注释
# -*- coding:gb2312 -*- #添加编码,可以显示中文,也可用中文做注释
能取到键盘输入的函数,虽然和raw_input差不多
import sys
sys.stdin.readline() #记录键盘输入,直到输入回车
取运行目录,方便游戏存档或者用户配置和程序保存在一起
import os
print os.getcwd() #取运行目录
这个比较有用了,能保存读取任何形式的文件,用来做游戏存档?
import pickle
pickle.dump(变量,路径) #写入文件,需配合open使用
pickle.load(路径) #读取文件,需配合open使用,可读取非txt文件
大概用法就是
#写入文件
files = open('c:\save','wb') #'wb'是以二进制方式写入
player = {health:100,magic:150}
pickle.dump(player,files)
#读取文件
files = open('c:\save','rb') #'rb'是以二进制方式读取
palyer = pickle.load(files)
能调用库中的所有函数而不需要输入库名
from 库 import * #用*让库中函数不需要前缀,直接使用函数
例如
from time import *
sleep(2) #睡眠2秒,不需要输入time.sleep直接用sleep即可
但有时函数名会冲突
函数收集
似乎能更加方便地使用自建函数
举个例子
def param (*params): #在变量前加*可收集其余参数并合成元组
print params
def param (**params): #在变量前加两个*可收集其余关键字参数并合成字典
print params
以及收集逆过程
def add(x,y):
print x+y
params = (1,2) #add需要两个参数,而params只是一个元组,算一个参数
add(*params) #但加了*后函数会主动收集元组中的值来分配到两个参数
同理关键字参数收集的逆过程
def number(name,num):
print name,"'s number is",num
dic = {'name':'Alice','num':'1234567'}
number(**dic) #number需要两个参数,加了两个*后可以直接收集字典中的值
不过参数收集逆过程需要字典中的键名与参数名对应
关于自建函数调用外部变量的方法
x=1
y=2
def plus:
global x #调用外部函数x,也可以说是绑定全局变量?
global y #调用外部函数y
print x+y
关于类的一些
子类可以继承父类的函数
class father: #建立父类
def sayhello(self):
print 'hello'
class child(father): #建立子类,括号中为父类,子类中并没有函数
pass
child.sayhello() #但是子类可以使用父类中的函数
一个子类可以调用多个父类 在调用括号中加入多个父类即可
先加入的父类可以重写(覆盖)后加入的父类的函数
检查继承
虽然并不是很有用但是类的继承很多的时候会很有用
能够检查一个类是否是另一个的子类
issubclass(child,father) #判断前一个类是否为后一个类的子类
设置类的函数私有化
无法从外部访问类中的个别函数
class Secretive():
__inaccessible(self): #在函数前面加两个_可以让函数无法从外部访问
pass
其实也有可以从外部访问的方法
s = Secretive()
s._Secretive__inaccessible() #在类前加_在函数前加两个_就可以强行访问私有的函数
所以不存在绝对的私有化
呃 今天就写到这里吧 学到的也只有这么多 并不会写啊 感觉太死板了