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

针对此菜单程序的设计,使用了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. Daikon Forge GUI Library(dfgui)之Event Binding

    点击按钮并弹出对话框,就用下面的大问题按钮吧 1,选中按钮,Component/Daikon Forge/Data Binding/Event Binding 2,UI上创建DfPanel,并将其Be ...

  2. mysql锁 实战测试代码

    存储引擎 支持的锁定 MyISAM 表级锁 MEMORY 表级锁 InnoDB 行级锁 BDB 页面锁 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低.行级锁:开销 ...

  3. JQuery 实现锚点链接之间的平滑滚动

    24. 解决链接锚点的生硬问题 $('.nav .btn[href*=#],.icon2,.icon3').click(function() { if (location.pathname.repla ...

  4. JS学习总结(新手)

    1. JS面向对象 http://www.cnblogs.com/JavascriptDream/p/5064976.html a. Prototype 属性的理解 b. 遗传继承函数 functio ...

  5. INotifyPropertyChanged, Interface

    Data Object(class) impliment INotifyPropertyChanged; then the Object can update BindingSource. Impli ...

  6. 利用JS生成01010101……长度可控的序列

    function ab(d){ var a = []; var x = 1 ; for (var i = 0; i < d; i++) { if (x == 0) { x = x + 1; } ...

  7. IntelliJ Idea 常用快捷键列表

    Alt+回车 导入包,自动修正 sout+Tab Syso快捷键 Ctrl+Alt+F 局部变量变为全局变量 Ctrl+Alt+V 类似于eclipse中Ctrl+2+L的快捷键 Ctrl+Alt+T ...

  8. js == 与 === 的区别,‘’与“”的区别

    js == 与 === 的区别 1.对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较"转化成同一类型后的值"看"值&quo ...

  9. 【Android测试】【第十九节】Espresso——API详解

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/5997557.html 前言 Espresso的提供了不少A ...

  10. angularjs 动态加载事件的另一种实现

    /** 初始化酒店列表 */ function inintHotel(params,url,$http,$scope){ $http.jsonp(url).success(function(res, ...