作业三:多级菜单
  • 三级菜单
  • 可依次选择进入各子菜单
  • 所需新知识点:列表、字典

针对此菜单程序的设计,使用了yaml格式的文本,由python对其内容进行解析为多重字典,然后对字典进行遍历,判断并输出三层的菜单。

一、流程图如下:

二、具体yaml格式如下:

香港:
香港
澳门:
澳门
台湾:
台湾
钓鱼岛:
钓鱼岛
北京市:
- 市辖区
- 东城区
- 西城区
- 崇文区
- 宣武区
- 朝阳区
河北省:
- 石家庄市:
- 长安区
- 桥东区
- 桥西区
- 新华区
- 唐山市:
- 路南区
- 路北区
- 古冶区
- 开平区
- 秦皇岛市:
- 海港区
- 山海关区
山西省:
- 太原市:
- 小店区
- 迎泽区
- 杏花岭区
- 大同市:
- 城 区
- 矿 区
- 南郊区
- 阳泉市:
- 城 区
- 矿 区
- 郊 区
- 平定县
- 盂 县
- 长治市:
- 城 区
- 郊 区
- 长治县
- 襄垣县
- 屯留县

yaml格式文本

注:三层结构:(其中以短杠“-”会被解析为数组,冒号“:”会被解析为字典)

香港、澳门、台湾、钓鱼岛只有一层;

北京、天津等直辖市只有二层,即直辖市===下属区县

其他省份有三层,即省份===地级市===下属区县

三、具体python2.7下代码如下:

#!/usr/bin/python27
#_*_ coding:utf-8 _*_
import sys,os,re,yaml,time
reload(sys)
sys.setdefaultencoding('utf-8') ######################对raw_input输入字符类型判断并转化#####################
def input_handle(s):
if str.isdigit(s): ###对输入是否是数字进行判断
s = int(s) ###如果输出的是个数字,则转化为整数类型
else:
s = s.decode('utf-8') ###如果是字符串或汉字,则转化为unicode类型(主要是针对汉字转化,汉字默认是str)
return s # try:
# eval(s) ###eval将字符串str当成有效的表达式来求值并返回计算结果
# except NameError: ###名称错误
# return s
# except SyntaxError: ###语法错误
# return s
# else:
# return eval(s) ####################框架函数######################
def framework(province='',city='',county=''):
os.system('clear') ###清屏###
print('''
******************************************************************
* *
* 欢迎访问全国省市查询系统 *
* *
****************************************************************** +-----------------------------------------------------------------
| 省份: %s
|
| 市(区): %s
|
| 县(区): %s
+-----------------------------------------------------------------
''' % (province,city,county)) ######################输出展示函数#################
def show(province_name='',city_name='',county_name=''):
output= '''
******************************************************************
* *
美丽的%s %s %s
* 欢迎您 *
这里的山美,水美,妹子更美
* *
******************************************************************
'''
print output % (province_name,city_name,county_name)
sys.exit('欢迎下次使用,再见') ###################菜单第一层省份或直辖市输出函数#################
def province_show(province_list): ############申明全局变量####################
global P_NAME
global C_NAME
global X_NAME
global FLAG_M province_dict = {}
############对省份或直辖市列表参数进行遍历并加上数字编号###############
for k,v in enumerate(province_list,1):
province_dict[k] = v
print '%d . %s' % (k,v) + '\t', ###末尾加',',取消默认换行###
if k % 4 == 0: ###按4列换行###
print
print('\n================================================================')
print('q : Exit') ###############键盘读入编号或省份,可以输入汉字#################
province_index = raw_input('请输入编号或省份 : ') ###############如果输入非空,对输入进行判断并转化类型###########
if len(province_index) != 0:
province_index = input_handle(province_index) if province_index == 'q': ###如果输入为q,则退出程序###
sys.exit(0)
elif province_index in province_dict.keys(): ###如果输入为数字编号,则从字典中获取具体省份或直辖市名称###
P_NAME = province_dict[province_index] ###对全局变量赋值省份名称###
elif province_index in province_dict.values(): ###如果输入为具体省份,则从字典中获取具体省份或直辖市名称###
P_NAME = province_index ###对全局变量赋值省份名称###
else:
P_NAME = '' ###输入其他字符,赋值全局变量为空### while P_NAME: ###全局变量不为空进行循环###
framework(P_NAME,C_NAME,X_NAME) ###调用框架###
if type(yaml_dict[P_NAME]) is list:
city_show(P_NAME) ###调用城市函数,并传入省份值###
if FLAG_M == 'b': ###城市函数输入b,返回上一层,重新选择省份###
break
else:
show(P_NAME) ###调用输出展示函数###
time.sleep(5)
P_NAME = ''
break
else:
print('输入错误,请重新输入!') ###P_NAME为空,即输入错误,重新输入###
time.sleep(2) ##############菜单第二层城市输出函数#######################
def city_show(province_name): ############申明全局变量###############
global P_NAME
global C_NAME
global X_NAME
global FLAG_M city_name = '' ###定义城市变量默认为空###
city_list = yaml_dict[province_name] ###定义赋值城市列表###
city_dict = {} ###定义城市编号和名称字典###
city_county_dict = {} ###定义地级市和下属区县字典### ############对城市列表参数进行遍历并加上数字编号###############
for k,v in enumerate(city_list,1):
if type(v) is unicode: ###直辖市只有二层菜单,第二层为直接的各区或县,值类型为具体字符unicode###
city_dict[k] = v ###对直辖市下的区或县进行新字典赋值,方便查询和展示###
print '%d . %s' % (k,v) + '\t', ###末尾加',',取消默认换行###
elif type(v) is dict: ###其他省份有三层菜单,第二层为各地级市,值类型字典###
for kk,vv in v.items(): ###对地级市的字典进行遍历###
city_dict[k] = kk ###对其他省份下的地级市进行新字典赋值,方便查询和展示###
city_county_dict[kk] = vv ###对二层地级市和三层县市重新赋值新字典###
print '%d . %s' % (k,kk) + '\t', ###末尾加',',取消默认换行###
else:
pass if k % 4 == 0: ###按4列换行###
print
print('\n================================================================')
print('q : Exit b : Back') ###############键盘读入编号或区市,可以输入汉字#################
city_index = raw_input('请输入编号或区市 : ') ###############如果输入非空,对输入进行判断并转化类型###########
if len(city_index) != 0:
city_index = input_handle(city_index) if city_index == 'q': ###如果输入为q,则退出程序###
sys.exit(0)
elif city_index == 'b': ###如果输入为b,则返回上一层,重新选择省份或直辖市###
(P_NAME,C_NAME,FLAG_M) = ('','','b') ###全局变量P_NAME,C_NAME设置为空,FLAG_M设置为b,则返回上一层###
return ###直接返回,不进行函数以下的操作###
elif city_index in city_dict.keys(): ###如果输入为数字编号,则从字典中获取具体城市名称###
city_name = city_dict[city_index] ###赋值地级市的名称,并对全局变量进行赋值###
(P_NAME,C_NAME,FLAG_M) = (province_name,city_name,'')
elif city_index in city_dict.values(): ###如果输入为城市名称,则从字典中获取具体省份名称###
city_name = city_index ###赋值地级市的名称,并对全局变量进行赋值###
(P_NAME,C_NAME,FLAG_M) = (province_name,city_name,'')
else:
pass ###如果输入其他字符,则不做任何操作### if city_name: ###如果地级市名字不为空,即键盘输入为要求字符###
if city_name in city_county_dict.keys(): ###判断是省份的地级市名字###
while C_NAME: ###环境变量C_NAME不为空###
framework(P_NAME,C_NAME,X_NAME) ###调用框架函数,并将省份名字和地级市名字传入### ###调用三层区县显示函数,并传入具体变量###
county_show(P_NAME,C_NAME,city_county_dict[city_name])
if FLAG_N == 'b': ###三层区县函数输入b,返回上一层,重新选择地级市###
break
else:
print('输入错误,请重新输入!') ###C_NAME为空,即输入错误,重新输入###
time.sleep(2)
else: ###判断是直辖市的区或县名字###
show(P_NAME,C_NAME) ###调用输出展示函数###
time.sleep(5)
else: ###输入非要求字符,提示重新输入###
print('输入错误,请重新输入!')
time.sleep(2) ##############菜单第三层区县输出函数#######################
def county_show(province_name,city_name,county_list): ############申明全局变量####################
global P_NAME
global C_NAME
global X_NAME
global FLAG_N county_name = '' ###定义三级区县变量默认为空###
county_dict = {} ##定义赋值区县字典### ############对区县列表参数进行遍历并加上数字编号###############
for k,v in enumerate(county_list,1):
if type(v) is unicode: ###第三层为直接的各区或县,值类型为具体字符unicode###
county_dict[k] = v ###对区或县进行新字典赋值,方便查询和展示###
print '%d . %s' % (k,v) + '\t', ###末尾加',',取消默认换行### if k % 4 == 0: ###按4列换行###
print
print('\n================================================================')
print('q : Exit b : Back') ###############键盘读入编号或区县,可以输入汉字#################
county_index = raw_input('请输入编号或区县 : ') ###############如果输入非空,对输入进行判断并转化类型###########
if len(county_index) != 0:
county_index = input_handle(county_index) if county_index == 'q': ###如果输入为q,则退出程序###
sys.exit(0)
elif county_index == 'b': ###如果输入为b,则返回上一层,重新选择第二层地级市###
(P_NAME,C_NAME,X_NAME,FLAG_N) = (province_name,'','','b') ###全局变量C_NAME设置为空,FLAG_M设置为b,则返回上一层###
return ###直接返回,不进行函数以下的操作###
elif county_index in county_dict.keys(): ###如果输入为数字编号,则从字典中获取具体区县名称###
county_name = county_dict[county_index] ###赋值区县的名称,并对全局变量进行赋值###
(P_NAME,C_NAME,X_NAME,FLAG_N) = (province_name,city_name,county_name,'')
elif county_index in county_dict.values(): ###如果输入为区县名称,则从字典中获取具体区县名称###
county_name = county_index ###赋值区县的名称,并对全局变量进行赋值###
(P_NAME,C_NAME,X_NAME,FLAG_N) = (province_name,city_name,county_name,'')
else: ###如果输入其他字符,则不做任何操作###
(P_NAME,C_NAME,X_NAME,FLAG_N) = (province_name,city_name,'','') if county_name: ###如果区县名字不为空,即键盘输入为要求字符###
show(P_NAME,C_NAME,X_NAME) ###调用输出展示函数###
time.sleep(5)
else:
print('输入错误,请重新输入!') ###输入非要求字符,提示重新输入###
time.sleep(2) ##########################################主程序############################### ###############读取yaml格式文件#######################
fd = open(sys.argv[1],'rb')
yaml_dict = yaml.load(fd) ###############定义全局变量###########################
P_NAME = '' ###省份或直辖市全局变量###
C_NAME = '' ###各省地级市或直辖市区县的全局变量###
X_NAME = '' ###各省地级市下的区或县 全局变量###
FLAG_M = '' ###退出菜单第二层,返回上一层循环的变量###
FLAG_N = '' ###退出菜单第三层,返回上一层循环的变量### ###############获取省份或直辖市的列表#################
prov_list = yaml_dict.keys() ###############主循环开始#############################
while True:
framework(P_NAME,C_NAME,X_NAME) ###调用框架函数,显示初始状态###
province_show(prov_list) ###调用第一层省份或直辖市输出函数###

三层菜单python2.7

四、具体python3.4下代码如下:

#!/usr/bin/python34
import sys,os,re,yaml,time
#reload(sys)
#sys.setdefaultencoding('utf-8') ######################对input输入字符类型判断并转化#####################
def input_handle(s):
if str.isdigit(s): ###对输入是否是数字进行判断
s = int(s) ###如果输出的是个数字,则转化为整数类型
return s # try:
# eval(s) ###eval将字符串str当成有效的表达式来求值并返回计算结果
# except NameError: ###名称错误
# return s
# except SyntaxError: ###语法错误
# return s
# else:
# return eval(s) ####################框架函数######################
def framework(province='',city='',county=''):
os.system('clear') ###清屏###
print('''
******************************************************************
* *
* 欢迎访问全国省市查询系统 *
* *
****************************************************************** +-----------------------------------------------------------------
| 省份: %s
|
| 市(区): %s
|
| 县(区): %s
+-----------------------------------------------------------------
''' % (province,city,county)) ######################输出展示函数#################
def show(province_name='',city_name='',county_name=''):
output= '''
******************************************************************
* *
美丽的%s %s %s
* 欢迎您 *
这里的山美,水美,妹子更美
* *
******************************************************************
'''
print(output % (province_name,city_name,county_name)) ###################菜单第一层省份或直辖市输出函数#################
def province_show(province_list): ############申明全局变量####################
global P_NAME
global C_NAME
global X_NAME
global FLAG_M province_dict = {}
############对省份或直辖市列表参数进行遍历并加上数字编号###############
for k,v in enumerate(province_list,1):
province_dict[k] = v
print('%d . %s' % (k,v) + '\t',end='') ###加上end参数,取消默认换行###
if k % 4 == 0: ###按4列换行###
print()
print('\n================================================================')
print('q : Exit') ###############键盘读入编号或省份,可以输入汉字#################
province_index = input('请输入编号或省份 : ') ###############如果输入非空,对输入进行判断并转化类型###########
if len(province_index) != 0:
province_index = input_handle(province_index) if province_index == 'q': ###如果输入为q,则退出程序###
sys.exit(0)
elif province_index in province_dict.keys(): ###如果输入为数字编号,则从字典中获取具体省份或直辖市名称###
P_NAME = province_dict[province_index] ###对全局变量赋值省份名称###
elif province_index in province_dict.values(): ###如果输入为具体省份,则从字典中获取具体省份或直辖市名称###
P_NAME = province_index ###对全局变量赋值省份名称###
else:
P_NAME = '' ###输入其他字符,赋值全局变量为空### while P_NAME: ###全局变量不为空进行循环###
framework(P_NAME,C_NAME,X_NAME) ###调用框架###
if type(yaml_dict[P_NAME]) is list:
city_show(P_NAME) ###调用城市函数,并传入省份值###
if FLAG_M == 'b': ###城市函数输入b,返回上一层,重新选择省份###
break
else:
show(P_NAME) ###调用输出展示函数###
time.sleep(5)
P_NAME = ''
break
else:
print('输入错误,请重新输入!') ###P_NAME为空,即输入错误,重新输入###
time.sleep(2) ##############菜单第二层城市输出函数#######################
def city_show(province_name): ############申明全局变量###############
global P_NAME
global C_NAME
global X_NAME
global FLAG_M city_name = '' ###定义城市变量默认为空###
city_list = yaml_dict[province_name] ###定义赋值城市列表###
city_dict = {} ###定义城市编号和名称字典###
city_county_dict = {} ###定义地级市和下属区县字典### ############对城市列表参数进行遍历并加上数字编号###############
for k,v in enumerate(city_list,1):
if type(v) is str: ###直辖市只有二层菜单,第二层为直接的各区或县,值类型为具体字符###
city_dict[k] = v ###对直辖市下的区或县进行新字典赋值,方便查询和展示###
print('%d . %s' % (k,v) + '\t',end='') ###末尾加',',取消默认换行###
elif type(v) is dict: ###其他省份有三层菜单,第二层为各地级市,值类型字典###
for kk,vv in v.items(): ###对地级市的字典进行遍历###
city_dict[k] = kk ###对其他省份下的地级市进行新字典赋值,方便查询和展示###
city_county_dict[kk] = vv ###对二层地级市和三层县市重新赋值新字典###
print('%d . %s' % (k,kk) + '\t',end='') ###加上end参数,取消默认换行###
else:
pass if k % 4 == 0: ###按4列换行###
print()
print('\n================================================================')
print('q : Exit b : Back') ###############键盘读入编号或区市,可以输入汉字#################
city_index = input('请输入编号或区市 : ') ###############如果输入非空,对输入进行判断并转化类型###########
if len(city_index) != 0:
city_index = input_handle(city_index) if city_index == 'q': ###如果输入为q,则退出程序###
sys.exit(0)
elif city_index == 'b': ###如果输入为b,则返回上一层,重新选择省份或直辖市###
(P_NAME,C_NAME,FLAG_M) = ('','','b') ###全局变量P_NAME,C_NAME设置为空,FLAG_M设置为b,则返回上一层###
return ###直接返回,不进行函数以下的操作###
elif city_index in city_dict.keys(): ###如果输入为数字编号,则从字典中获取具体城市名称###
city_name = city_dict[city_index] ###赋值地级市的名称,并对全局变量进行赋值###
(P_NAME,C_NAME,FLAG_M) = (province_name,city_name,'')
elif city_index in city_dict.values(): ###如果输入为城市名称,则从字典中获取具体省份名称###
city_name = city_index ###赋值地级市的名称,并对全局变量进行赋值###
(P_NAME,C_NAME,FLAG_M) = (province_name,city_name,'')
else:
pass ###如果输入其他字符,则不做任何操作### if city_name: ###如果地级市名字不为空,即键盘输入为要求字符###
if city_name in city_county_dict.keys(): ###判断是省份的地级市名字###
while C_NAME: ###环境变量C_NAME不为空###
framework(P_NAME,C_NAME,X_NAME) ###调用框架函数,并将省份名字和地级市名字传入### ###调用三层区县显示函数,并传入具体变量###
county_show(P_NAME,C_NAME,city_county_dict[city_name])
if FLAG_N == 'b': ###三层区县函数输入b,返回上一层,重新选择地级市###
break
else:
print('输入错误,请重新输入!') ###C_NAME为空,即输入错误,重新输入###
time.sleep(2)
else: ###判断是直辖市的区或县名字###
show(P_NAME,C_NAME) ###调用输出展示函数###
time.sleep(5)
else: ###输入非要求字符,提示重新输入###
print('输入错误,请重新输入!')
time.sleep(2) ##############菜单第三层区县输出函数#######################
def county_show(province_name,city_name,county_list): ############申明全局变量####################
global P_NAME
global C_NAME
global X_NAME
global FLAG_N county_name = '' ###定义三级区县变量默认为空###
county_dict = {} ##定义赋值区县字典### ############对区县列表参数进行遍历并加上数字编号###############
for k,v in enumerate(county_list,1):
if type(v) is str: ###第三层为直接的各区或县,值类型为具体字符str###
county_dict[k] = v ###对区或县进行新字典赋值,方便查询和展示###
print('%d . %s' % (k,v) + '\t',end='') ###加上end参数,取消默认换行### if k % 4 == 0: ###按4列换行###
print()
print('\n================================================================')
print('q : Exit b : Back') ###############键盘读入编号或区县,可以输入汉字#################
county_index = input('请输入编号或区县 : ') ###############如果输入非空,对输入进行判断并转化类型###########
if len(county_index) != 0:
county_index = input_handle(county_index) if county_index == 'q': ###如果输入为q,则退出程序###
sys.exit(0)
elif county_index == 'b': ###如果输入为b,则返回上一层,重新选择第二层地级市###
(P_NAME,C_NAME,X_NAME,FLAG_N) = (province_name,'','','b') ###全局变量C_NAME设置为空,FLAG_M设置为b,则返回上一层###
return ###直接返回,不进行函数以下的操作###
elif county_index in county_dict.keys(): ###如果输入为数字编号,则从字典中获取具体区县名称###
county_name = county_dict[county_index] ###赋值区县的名称,并对全局变量进行赋值###
(P_NAME,C_NAME,X_NAME,FLAG_N) = (province_name,city_name,county_name,'')
elif county_index in county_dict.values(): ###如果输入为区县名称,则从字典中获取具体区县名称###
county_name = county_index ###赋值区县的名称,并对全局变量进行赋值###
(P_NAME,C_NAME,X_NAME,FLAG_N) = (province_name,city_name,county_name,'')
else: ###如果输入其他字符,则不做任何操作###
(P_NAME,C_NAME,X_NAME,FLAG_N) = (province_name,city_name,'','') if county_name: ###如果区县名字不为空,即键盘输入为要求字符###
show(P_NAME,C_NAME,X_NAME) ###调用输出展示函数###
time.sleep(5)
else:
print('输入错误,请重新输入!') ###输入非要求字符,提示重新输入###
time.sleep(2) ##########################################主程序############################### ###############读取yaml格式文件#######################
fd = open(sys.argv[1],'rb')
yaml_dict = yaml.load(fd) ###############定义全局变量###########################
P_NAME = '' ###省份或直辖市全局变量###
C_NAME = '' ###各省地级市或直辖市区县的全局变量###
X_NAME = '' ###各省地级市下的区或县 全局变量###
FLAG_M = '' ###退出菜单第二层,返回上一层循环的变量###
FLAG_N = '' ###退出菜单第三层,返回上一层循环的变量### ###############获取省份或直辖市的列表#################
prov_list = yaml_dict.keys() ###############主循环开始#############################
while True:
framework(P_NAME,C_NAME,X_NAME) ###调用框架函数,显示初始状态###
province_show(prov_list) ###调用第一层省份或直辖市输出函数###

三层菜单python3.4

五、具体展示见下图:

1、初始状态,可以输入数字编号或中文名字:

2、访问香港、澳门、台湾、钓鱼岛只有一层的菜单:

3、北京、天津等直辖市只有二层的菜单:

4、其他省份三层的菜单:

5、返回上一层功能:

6、退出功能,在任意一层输入'q',即可退出程序。

针对二个版本的不同之处说明如下:

1、在python3.4下,经测试字符串存储的类型已经都成为str,包括英文,汉字

而在python2.7下,经测试字符串存储类型,英文为unicode;汉字为str

(1)在python2.7下还需要设置默认编码,具体如下:

reload(sys)
              sys.setdefaultencoding('utf-8')

要不然会报如下错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 18: ordinal not in range(128)

(2)在python2.7下还需要对汉字的str进行转码,具体如下:

s = s.decode('utf-8')

2、针对print的使用,略有不同,具体如下:

python2.7 :

print '%d . %s' % (k,v) + '\t',              ###末尾加',',取消默认换行###

python3.4 :

print('%d . %s' % (k,v) + '\t',end='')       ###加上end参数,取消默认换行###

3、windows上进行测试,python2.7有一部分会出现乱码,python3.4一切正常,需要对二个地方需要注意:

(1) .  fd = open(sys.argv[1],'rb') 打开文件一定要用rb,以二进制方式 。方便迁移

(2) .  清屏命令    linux下用os.system('clear')    windows下用os.system('cls')

python之编写三层菜单(第一天)的更多相关文章

  1. python之练习-三层菜单

    今天练习编写显示3层城市名称并可以返回上一层以及退出程序. Readme: 程序概述1:程序名称为:menu_three.py2:记录省,市,县的原始文件名为:areafile3:areafile文件 ...

  2. python之三层菜单递归

    首先非常感谢11期的学长薜保库提供了一种非常实用函数递归方法,让实现三层菜单如此简单,不过对所遍历的嵌套字典或列表格式有所要求.有特定的环境下非常实用. 主要针对中国的各省市区进行展示,采用了百度的j ...

  3. Python学习第二天-编写三级菜单

    编写三级菜单:1. 运行程序输出第一级菜单2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单3. 菜单数据保存在文件中4. 让用户选择是否要退出5. 有返回上一级菜单的功能 # Author: z ...

  4. Python之三层菜单

    三层菜单,根据用户所选数字,进入子菜单.一级一级呈现. menu = { 'Beijing': { "ChaoYang": { "CBD": ['CICC', ...

  5. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  6. Python :编写条件分支代码的技巧

    『Python 工匠』是什么? 我一直觉得编程某种意义是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目. 在雕琢代码的过程中,有大工程:比如应该用什么架构.哪种设计模式.也有 ...

  7. 运用Python语言编写获取Linux基本系统信息(二):文件系统使用情况获取

    本文跟着上一篇文章继续写,上一篇文章的链接 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 一.随便说说 获取文件系统使用情况的思路和上一篇获取主要系统是 ...

  8. SLAM+语音机器人DIY系列:(二)ROS入门——4.如何编写ROS的第一个程序hello_world

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  9. Python 内编写类的各种技巧和方法

    Python 内编写类的各种技巧和方法 简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象 ...

随机推荐

  1. 安卓中級教程(8):pathbutton中的animation.java研究(1)

    src/geniuz/myPathbutton/myAnimations.java package geniuz.myPathbutton; import java.util.ArrayList; i ...

  2. C# 依赖注入

      http://www.cnblogs.com/leoo2sk/archive/2009/06/17/1504693.html 这篇文章真的非常非常好···绝对值得收藏学习.     目录 目录 1 ...

  3. eclipse导入项目后,java文件无法编辑的问题

    新公司第一天,从svn checkout maven项目后,导入eclipse,发现文件的图标不对,如下图箭头所示,出现这个问题的原因, 是项目的的目录下没有.classpath文件,所以需要执行下m ...

  4. hibernate学习(9)——日志,一对一,二级缓存

    1.Hibernate中的日志 1  slf4j 核心jar  : slf4j-api-1.6.1.jar .slf4j是日志框架,将其他优秀的日志第三方进行整合. 整合导入jar包 log4j 核心 ...

  5. JavaScript Array 常用函数整理

    按字母顺序整理 索引 Array.prototype.concat() Array.prototype.filter() Array.prototype.indexOf() Array.prototy ...

  6. How to reset password for unknow root

    1. Click "e" when entering the grub 2. Add option " init=/bin/sh" to linux line. ...

  7. 如何给main传参数

    main 函数的参数有连个argc argcv[]  argc 是参数个数 argcv是参数的数组指针,且argcv的第一个参数是默认程序路径加程序名 给main传参数,需要在命令行启动程序时设置 如 ...

  8. web app 自适应方案总结 关键字 弹性布局之rem

    关于rem,主要参考文档 1.腾讯ISUX (http://isux.tencent.com/web-app-rem.html) 2.http://www.w3cplus.com/css3/defin ...

  9. sprintf数据库查询的作用

    $sql = sprintf("UPDATE file SET mimetype=null,title=null,size=null,protected=null WHERE id=%d&q ...

  10. hosts的设置,我们直接可以在下面路径找到hosts文件:C:\Windows\System32\drivers\etc

    hosts的设置,我们直接可以在下面路径找到hosts文件:C:\Windows\System32\drivers\etc