1. 数据类型

1.1 数字

数字的作用:与数字相关,例如:手机号、QQ号、身份证号等,用数字表示

数字分为:整数(int)、浮点数(float)、复数(了解)

例子:

age = 10
print(type(age))
salary = 5680.85
print(type(salary)) 

长整型和复数,了解即可

长整型:在pyhton2中使用,在python3已经废弃掉

复数:

x = 1 - 2j        # 定义
print(x.real) # 获取实部
print(x.imag) # 获取虚部

整数分为:二进制、八进制、十进制、十六进制等

进制之间可以相互转换,例如:

age = 10  # age=int(10)
print(bin(age)) # 十进制转化为二进制
print(oct(age)) # 十进制转化为八进制
print(hex(age)) # 十进制转化为十六进制

1.2 字符串

作用:定义名字、地址、国籍等描述性信息

定义:在单引号、双引号、三引号内由一串字符组成;字符串,本身存储一个值,由一串字符组成。

常用操作有:

移除空白

切分

长度

索引

切片

1.2.1 移除空白

移除空白的方法是strip,例如:

msg='    welcome to beijing     '
print(msg.strip()) # 移除左右两侧空白
print(msg.rstrip()) # 移除右侧空白
print(msg.lstrip()) # 移除左侧空白

运行结果:

welcome to beijing
welcome to beijing
welcome to beijing

移除指定字符,比如移除指定字符’*’,例如:

msg='******python******'
print(msg.strip('*'))
print(msg.lstrip('*'))
print(msg.rstrip('*'))

运行结果:

python
python******
******python 

1.2.2 切分

字符串切分,通过制定切分字符,进行切分,切分的结果是一个列表,例如:

user_info='root:x:0:0::/root:/bin/bash'
user_list=user_info.split(':')
print(user_list)

运行结果:

['root', 'x', '', '', '', '/root', '/bin/bash'] 

指定切分次数进行字符串切分,例如:

cmd_info='get|sys.log|error'
cmd_list=cmd_info.split('|',1)
print(cmd_list)

运行结果:

['get', 'sys.log|error']

字符串默认切分分割符空格,例如:

msg='my name is jack '

运行结果:

['my', 'name', 'is', 'jack']

1.2.3长度

统计字符串长度,实际就是统计字符的个数,例如:

msg='hello world'
print(msg.__len__()) # 属于内置方法
print(len(msg)) # 等价于msg.__len__() 

1.2.4 切片

切片,跟下标有关,顾头不顾尾的操作,例如:

msg = 'hello world'
print(msg[1:4])
print(msg[:4])
print(msg[4:])
print(msg[:-1])
print(msg[:])
print(msg[2:7:2])
执行结果:
ell
hell
o world
hello worl
hello world
low

1.2.5 其他操作

1.2.5.1 endswith startswith

startswith 以…开头,判断的结果是True、False

endswith 以…结尾,判断的结果是True、False

例如:

name='alex_SB'
print(name.endswith('SB')) # 以SB开头,判断成功,显示True
print(name.startswith('alex')) # 以alex结果,判断成功,显示True 

1.2.5.2 replace

replace字符串的替换,例如:

name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','SB',1)) # 指定替换次数

1.2.5.3 format

字符串本身提供字符串格式的方法format,例如:

print('{} {} {}'.format('jack',58,'male'))
print('{0} {1} {0}'.format('jack',58,'male'))
print('NAME:{name} AGE:{age} SEX:{sex}'.format(age=58,sex='male',name='jack'))

运行结果:

jack 58 male
jack 58 jack
NAME:jack AGE:58 SEX:male

1.2.5.4 isdigit

判断字符串是否为数据,提供了三种方法isdigit、

num=''
print(num.isdigit()) 

利用isdigit判断是否为数字,进行程序的判断运行

jack_age=73
while True:
age=input('>>: ').strip()
if len(age) == 0:continue
if age.isdigit():
age=int(age)
print(age,type(age))

1.2.5.5 find index

name='jack say hello'
print(name.find('o',1,3)) # 顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
print(name.index('e',2,4)) # 同上,但是找不到会报错
print(name.count('e',1,3)) # 顾头不顾尾,如果不指定范围则查找所有 

1.2.5.6 join

利用join,进行字符串的拼接,内容必须是字符串;否则会类别报错,

l=['jack','say','hello','world'] #类别内容必须都是字符串
print(':'.join(l))
tag=' '
print(tag.join(['jack','say','hello','world'])) #可迭代对象必须都是字符串 

1.2.5.7 填充

利用center方法,进行填充,填充可以指定字符,默认填充字符是空格,例如:

name='jack'
print(name.center(30))
print(name.center(30,'*'))
print(name.ljust(30,'*'))
print(name.rjust(30,'*'))
print(name.zfill(30))

运行结果:

             jack
*************jack*************
jack**************************
**************************jack
00000000000000000000000000jack

1.2.5.8 expandtabs

指定tab键空格数量,默认的tab键是四个空格,例如:

name='jack\thello'
print(name)
print(name.expandtabs(2)) 

1.2.5.9 大小写转换

name='JACK'
print(name.lower()) # 大写转小写
name='jack'
print(name.upper()) # 小写转大写 

1.2.5.10  capitalize swapcase title

name='jack say'
print(name.capitalize()) # 首字母大写
print(name.swapcase()) # 大小写翻转
msg='jack say hi'
print(msg.title()) # 每个单词的首字母大写
name='jack123'
print(name.isalnum()) # 字符串由字母和数字组成
name='jack'
print(name.isalpha()) # 字符串只由字母组成

运行结果:

Jack say
JACK SAY
Jack Say Hi
True
True 

1.2.5.11 判断数字

利用isdigit判断是否为数字,可以对Bytes、unicode进行数字判断:

num1=b'' #Bytes
num2=u'' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字 print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
运行结果:
True
True
False
False

利用isnumberic进行判断中文和罗马的数字

num1='四' #中文数字
num2='Ⅳ' #罗马数字
print(num1.isnumeric())
print(num2.isnumeric()) 

利用isdecimal进行判断unicode的数字

num1=u'' #unicode,python3中无需加u就是unicode
num2='四' #中文数字
num3='Ⅳ' #罗马数字 #isdecimal:对unicode的数字进行判断
print(num1.isdecimal()) # 结果True
print(num2.isdecimal()) # 结果False
print(num3.isdecimal()) # 结果False

结论:用isdigit基本满足对数字的判断

1.2.5.12 练习题

# 写代码,有如下变量,请按照要求实现每个功能
name = " aleX"
# 1) 移除 name 变量对应的值两边的空格,并输出处理结果
print(name.strip())
# 2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果

print(name.startswith(('al')))
# 3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果

print(name.endswith('X'))
# 4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
print(name.replace('l','p'))
# 5) 将 name 变量对应的值根据 “l” 分割,并输出结果。
print(name.split('l'))
# 6) 将 name 变量对应的值变大写,并输出结果

print(name.upper())
# 7) 将 name 变量对应的值变小写,并输出结果

print(name.lower())
# 8) 请输出 name 变量对应的值的第 2 个字符?
print(name[1])
# 9) 请输出 name 变量对应的值的前 3 个字符?
print(name[:3])
# 10)请输出 name 变量对应的值的后 2 个字符?

print(name[-2:])
# 11)请输出 name 变量对应的值中 “e” 所在索引位置?

print(name.find('e'))
# 12)获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
print(name[:-1]) 

1.3 列表

作用:可以存多个值,例如爱好、课程、多个朋友等。

定义:[]内可以有多个任意类型的值,例如:数字、字符串、列表、字典、元组等。

常用操作:

索引

切片

追加

删除

长度

包含

1.3.1 索引

索引,即为下标,与字符串类似;可以通过下标进行访问列表的值,从左往右,按照顺序进行访问,例如:

my_friends=['jack','tom','frank',4,10,30]
print(my_friends[1]) 

1.3.2 切片

从列表中切出子列表,例如:

my_friends=['jack','tom','frank',4,10,30]
print(my_friends[1:5])

运行结果:

['tom', 'frank', 4, 10] 

1.3.3 追加

利用列表的方法append,向列表尾部添加元素,例如:

my_friends=['jack','tom','frank',4,10,30]
my_friends.append('mary')
print(my_friends)

运行结果:

['jack', 'tom', 'frank', 4, 10, 30, 'mary']

1.3.4 删除

列表的删除有pop、remove,具体用法,用例子进行说明,例如:

my_friends=['jack','tom','frank',4,10,30,'mary']
# pop按照索引进行删除
my_friends.pop() # 从列表尾部删除
my_friends.pop(0) # 从列表头部删除
my_friends.pop(2) # 从指定位置删除
print(my_friends) # 运行结果:['tom', 'frank', 10, 30] my_friends=['jack','tom','frank',4,10,30,'mary']
#remove按照值进行删除
my_friends.remove('frank') # 删除值为frank
print(my_friends) # 运行结果:['jack', 'tom', 4, 10, 30, 'mary']

1.3.5 长度

计算列表长度,利用列表的内置方法__len__()进行计算,python也提供了len()方法计算列表长度,例如:

my_friends=['jack','tom','frank',4,10,30,'mary']
print(my_friends.__len__()) # 内置方法__len__() 结果:7
print(len(my_friends)) # 利用方法len() 结果:7 

1.3.6 成员运算,包含(in)

成员运算,主要利用in判断成员是否在列表存在,例如:

my_friends=['jack','tom','frank',4,10,30,'mary']
print('mary' in my_friends) # 运行结果:True

1.3.7 插入

插入元素,利用insert

my_friends=['jack','tom','frank',4,10,30,'mary']
my_friends.insert(0,'abc') # 从开始位置插入
my_friends.insert(2,'cat') # 指定位置插入
print(my_friends) 

1.3.8 其他操作

my_friends=['jack','tom','frank',4,10,30,'mary']
# my_friends.clear() # 清空列表的值
new_list=my_friends.copy() # copy一个列表
my_friends.count('jack') # 统计元素在列表中的次数
my_friends.extend(['jack1','jack2','jack3']) # 一次添加多个元素
my_friends.index('tom') # 查看元素在列表中的下标
my_friends.reverse() # 列表翻转

1.3.9 模拟队列

#队列:先进先出
fifo=[]
# 入队
fifo.append('first')
fifo.append('second')
fifo.append('third')
# 出队
fifo.pop(0)
fifo.pop(0)
fifo.pop(0) # 入队
fifo.insert(0,'first')
fifo.insert(0,'second')
fifo.insert(0,'third')
# 出队
fifo.pop()
fifo.pop()
fifo.pop()

1.3.10 模拟堆栈

#堆栈:先进后出
filo=[]
# 入栈
filo.append('first')
filo.append('second')
filo.append('third')
print(filo)
# 出栈
filo.pop()
filo.pop()
filo.pop() # 入栈
filo.insert(0,'first')
filo.insert(0,'second')
filo.insert(0,'third')
# 出栈
filo.pop(0)
filo.pop(0)
filo.pop(0) 

1.4 元组

作用:存多个值,对比列表来说,元组不可变;主要用来读

特点:不可变,进行读操作,可与列表对比学习

常用操作:

索引

切片

循环

长度

包含in

1.4.1 定义

例如:

age=(11,22,33,44,55,33)# 本质age=tuple((11,22,33,44,55)) 

1.4.2 使用

age=(11,22,33,44,55,33)
print(age[1]) # 按索引取值
print(age[1:4]) # 元组的切片
print(len(age)) # 获取元组的元素个数
print(age.__len__()) # 获取元组的元素个数
print(35 in age) # 判断元素是否是元组的元素
print(age.count(33)) # 判断元素在元组中的数量
print(age.index(44)) # 获取元素在元组中的索引

1.4.3 练习

简单购物车:

# 实现打印商品详细信息,
# 用户输入商品名和购买个数,
# 则将商品名,价格,购买个数加入购物列表,
# 如果输入为空或其他非法输入则要求用户重新输入 msg_dic={
'apple':10,
'tesla':100000,
'mac':3000,
'lenovo':30000,
'chicken':10,
} goods_list=[] while True:
for key in msg_dic:
print('\033[43mName:{name}\t\tPrice:{price}\033[0m'.format(name=key,price=msg_dic[key]))
choice=input('pls input your goods>>:')
if len(choice) == 0 or choice not in msg_dic: continue count=input('pls input your number>>:')
if not count.isdigit(): continue goods_list.append((choice,msg_dic[choice],count))
print(goods_list)

1.5 字典

作用:存多个值,用key-value进行存取,取值方便,速度快

特点:字典的key必须是不可变类型,也成为可hash类型

常用操作:

存/取

删除

键值

长度

循环

包含in

1.5.1 定义

字典的key必须是不可变类型(数字、字符串、元组),值可以是任意类型

定义的方式:

info={'name':jack,'age':18,'sex':'male'}
#本质info=dict({'name':jack,'age':18,'sex':'male'}) 

1.5.2 存/取

# 字典的取值,赋值
info={'name':'jack','age':18,'sex':'male'}
print(info['age']) # 取值
info['height']=1.80 # 存值

1.5.3 删除

通过字典的pop方法,进行删除;pop方法有两个参数,通过指定key进行删除子点的元素

info={'name':'jack','age':18,'sex':'male'}
print(info.pop('name'))
# print(info)
print(info.pop('tom',None)) 

1.5.4 获取

利用get获取字典的值,如果key不存在,返回None,不报错;例如:

info={'name':'jack','age':18,'sex':'male'}
print(info['name']) # key不存在,报错
print(info.get('name')) # key不存在,返回None
print(info.get('addr','not key')) # key不存在,返回not key

1.5.5 其他方法

info={'name':'jack','age':18,'sex':'male'}
print(info.popitem()) # 随机删除一个元素
print(info.keys()) # 获取字典所有的key
print(info.values()) # 获取字典所有的value # 循环字典
for key in info:
print(key)
for key in info:
print(key,info[key]) # 字典的items()方法
for key,val in info.items(): # key,val == ('name','jack')
print(key,val) 

1.5.6 fromkeys

利用fromkeys方法,进行初始化字典

dic=dict.fromkeys(['name','age','sex'],None)
print(dic)
print(dict([('name', 'jack'), ('age', 18), ('sex', 'male')])) 

2.5.7 update

update用新的字典更新原来字典,如果原来字典没有,直接把新字典添加原来字典

info={'name':'jack','age':18,'sex':'male'}
dic={'a':1,'b':2,'name':'mary','sex':'female'}
info.update(dic)
print(info) 

1.5.8 练习

# 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],
# 将所有大于 66 的值保存至字典的第一个key中,
# 将小于 66 的值保存至第二个key的值中。
# 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
list=[11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
dic={'k1':[],'k2':[]}
for key in list:
if key > 66:
dic['k1'].append(key)
elif key < 66:
dic['k2'].append(key)
print(dic) # 统计s='hello alex alex say hello sb sb'中每个单词的个数
# 结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
s='hello alex alex say hello sb sb'
word_list=s.split()
dic={}
print(word_list)
for key in word_list:
if key in dic:
dic[key]=dic[key]+1
else:
dic[key]=1
print(dic) 

1.6 集合

作用:关系运算,去除重复的元素

常用方法:

in和not in

& 交集

| 并集

- 差集

^ 对称差集

>,>= ,<,<= 父集、子集

1.6.1 定义

定义:由不同元素组成的集合,集合中是一组无序排列的可hash的值,可以作为字典的key

目的:将不同的值存放在一起,不同的集合间用来做关系运算,无序纠结于集合中的单个值。

s={1,}

特点:

  1. 集合内可以有多个元素,但是每个元素都必须是不可变类型,即可hash类型
  2. 集合内的元素必须唯一
  3. 集合内的元素是无序的
s={1,'a',1,2,3,2,2,1} # s=set({1,'a',1,2,3,2,2,1})
s1=set('hello')
print(s1,type(s1))

1.6.2 成员运算

判断一个元素是否在集合中,可以用in、not in进行判断,例如:

pythons={'jack','mary','yuanhao','tom','gangdan','biubiu'}
print('jack' in pythons)
print('frank' not in pythons) 

1.6.3 关系运算

#关系运算
s1={1,10,11,22}
s2={1,11,33} #交集
print(s1 & s2) #并集
print(s1 | s2) #差集
print(s1 - s2)
print(s2 - s1) #对称差集
print(s1 ^ s2) #父集
s1={1,2,3,4}
s2={1,5}
print(s1 >= s2) #子集
print(s1 <= s2)
print(s2 <= s1) 

1.6.4 练习

#集合练习一
pythons={'jack','mary','yuanhao','wupeiqi','gangdan','biubiu'}
linuxs={'wupeiqi','tom','gangdan'}
# 1. 求出即报名python又报名linux课程的学员名字集合
print(pythons & linuxs)
# 2. 求出所有报名的学生名字集合
print(pythons | linuxs)
# 3. 求出只报名python课程的学员名字
print(pythons - linuxs)
# 4. 求出没有同时这两门课程的学员名字集合
print(pythons ^ linuxs) # 集合练习二
# 1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,
# 且新列表无需保持列表原来的顺序
l=['a','b',1,'a','a']
s=set(l)
print(s)
last_list=list(s)
print(last_list) # 2.在上题的基础上,保存列表原来的顺序
l=['a','b',1,'a','a']
new_list=[]
for item in l:
if item not in new_list:
new_list.append(item)
print(new_list) new_list=[]
s=set()
for item in l:
if item not in s:
s.add(item)
new_list.append(item)
print(new_list) # 3.有如下列表,列表元素为不可hash类型,去重,得到新列表,
# 且新列表一定要保持列表原来的顺序
l=[
{'name':'jack','age':18,'sex':'male'},
{'name':'alex','age':73,'sex':'male'},
{'name':'jack','age':20,'sex':'female'},
{'name':'jack','age':18,'sex':'male'},
{'name':'jack','age':18,'sex':'male'},
]
l1=[]
for item in l:
if item not in l1:
l1.append(item)
print(l1) ll=[]
s=set()
for item in l:
val=(item['name'],item['age'],item['sex'])
if val not in s:
s.add(val)
ll.append(item)
print(ll)

1.6.5 内置方法

#集合的内置方法
pythons={'jack','mary','frank','cat','gangdan','biubiu'}
linuxs={'cat','tom','frank'}
# 1. 求出即报名python又报名linux课程的学员名字集合
print(pythons & linuxs)
print(pythons.intersection(linuxs))
# 2. 求出所有报名的学生名字集合
print(pythons | linuxs)
print(pythons.union(linuxs))
# 3. 求出只报名python课程的学员名字
print(pythons - linuxs)
print(pythons.difference(linuxs))
# 4. 求出没有同时这两门课程的学员名字集合
print(pythons ^ linuxs)
print(pythons.symmetric_difference(linuxs))

1.6.6 add

利用集合的add方法,向集合中添加元素

s={1,2,'a','hello'}
s.add('jack')
print(s) 

1.6.7 删除

s={1,2,'a','hello','jack'}
s.pop() # 随机删除
s.remove('jack') # 指定元素删除,元素不存在报错
s.discard('mary') # 指定元素删除,元素不存在不报错 

1.7 总结

按存值个数区分

标量、原子类型:数字,字符串

容器类型:      列表,元组,字典

按可变不可变区分

可变:  列表,字典

不可变:数字,字符串,元组

按访问方式区分

直接访问:               数字

按照索引访问(序列类型):字符串,列表,元组

按照key访问(映射类型): 字典

2. 字符编码

以下两个场景下会涉及到字符编码的问题:

  1. 一个python文件中的内容是由一堆字符组成的
  2. python中的数据类型字符串是由一串字符组成的

需要强调的一点是:

unicode:简单粗暴,所有字符都是2Bytes,优点是:字符à数字的转换速度快,缺点是占用空间大

utf-8:精准,对不同的字符用不同的长度表示,优点是节省空间,缺点是:字符à数字的转换速度慢,因为每次都需要计算出字符需要多长的Bytes才能准确表示

注意:

  1. 内存中使用的编码是unicode,用的是空间换时间(程序都需要加载到内存才能运行,因而内存应该是尽可能的保证快)
  2. 硬盘中或者网络传输用utf-8,网络I/O延迟或磁盘I/O延迟要远大于uft-8的转换延迟,因而I/O应该是尽可能的节省带宽,保证数据传输的稳定性。

字符编码的转换流程:

总结:

无论用何种编辑器,要防止文件出现乱码(请一定要注意:存放一段代码的文件也仅仅是一个普通文件而已,此处指的是文件没有执行前,我们打开文件时出现的字符),核心法则:文件以什么编码保存,就以什么编码方式打开。

3.文件操作

文件的复杂操作,其实就两种操作:读和写,其他操作在Python的开发中都不用太关注,主要是因为操作系统已经帮我们做其他方面的工作。

文件操作步骤:

  1. 打开文件
  2. 对文件进行操作
  3. 关闭文件

3.1 文件读

读模式不能进行写操作,只能进行读操作
f = open('a.txt','r',encoding='utf-8')   # 应用程序向操作系统发起的请求,指定utf-8编码、以只读的方式打开文件
res = f.read() # read方法,是文件头读到文件尾部
print(res) # 打印文件读取结果 f.readline() # 一次读取一行
f.readlines() # 读取所有行 f.close() # 关闭文件操作 关闭的是操作系统的文件句柄,变量f还存在,已经不能对文件进行操作 with open('a.txt','r',encoding='utf-8') as f: # 此种方法对文件操作完成后,会自动调用f.close(),关闭文件操作句柄
pass

3.2 文件写

写模式,只能对文件进行写操作,不能进行读

f = open('a.txt','w',encoding='utf-8') # 应用程序向操作系统发起的请求,指定utf-8编码、以只写的模式打开文件
f.write('111\n') # 单个值的写
f.write('222\n')
f.writelines(['a\n','b\n','c\n']) # 列表的写
f.close()

3.3 文件修改操作

文件修改操作,类似于vim的编辑,先把修改文件保存到临时文件夹中,让后删除原来文件,最后把临时文件重新命名为源文件。例如:

import os
# 文件修改
with open('old.txt','r',encoding='utf-8') as read_f,\
open('.old.txt.swap','w',encoding='utf-8') as write_f:
for line in read_f:
if 'jack' in line:
line = line.replace('jack','mary')
write_f.write(line)
os.remove('old.txt')
os.rename('.old.txt.swap','old.txt')

python基础之二的更多相关文章

  1. Python 基础语法(二)

    Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...

  2. python基础知识(二)

    python基础知识(二) 字符串格式化 ​ 格式: % 类型 ---- > ' %类型 ' %(数据) %s 字符串 ​ print(' %s is boy'%('tom')) ----> ...

  3. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  4. Python之路:Python 基础(二)

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'lenliu' print name 下面的结论对吗?(对) 外层变量,可以被 ...

  5. Python基础篇(二)_基本数据类型

    Python基础篇——基本数据类型 数字类型:整数类型.浮点数类型.复数类型 整数类型:4种进制表示形式:十进制.二进制.八进制.十六进制,默认采用十进制,其他进制需要增加引导符号 进制种类 引导符号 ...

  6. python基础(二)-------数据类型

    python开发基础篇(二)数据类型 python数据类型有: 1.数字 1.只能存放一个值 2.一经定义,不可更改 3.直接访问 主要的分类为:整型,长整型,(python2有长整型的概念Pytho ...

  7. 第八章:Python基础の面向对象(二)

    本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ...

  8. Python 基础【二】 上

    一.python语言分类 1. C python   c语言的python版本 官方推荐 使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行 ...

  9. Bigger-Mai 养成计划,Python基础巩固二

    模块初识1.标准库2.第三方库import sys sys.path #自己的本文件名不可为sys.py#输出模块存储的环境变量sys.argv #打印脚本的相对路径sys.argv[2] #取第二个 ...

  10. python基础介绍二

    一.python种类 1.1 Cpython python官方版本,使用c语言实现,运行机制:先编译,py(源码文件)->pyc(字节码文件),最终执行时先将字节码转换成机器码,然后交给cpu执 ...

随机推荐

  1. [poj 2342]简单树dp

    题目链接:http://poj.org/problem?id=2342 dp[i][0/1]表示以i为根的子树,选或不选根,所能得到的最大rating和. 显然 dp[i][0]=∑max(dp[so ...

  2. 关于hadoop: command not found的问题

    问题: 昨天在安装完hadoop伪分布式之后,执行hadoop下的子项目--文字计数功能时出现该错误,然后今天执行 hadoop fs -ls命令时系统给出同样的错误提醒,经过查找资料,初步认为是ha ...

  3. DotNet 学习笔记 应用状态管理

    Application State Options --------------------------------------------------------------------- *Htt ...

  4. [bzoj2427][HAOI2010]软件安装——强连通分量+树形DP

    题目大意 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最大). 但是 ...

  5. bzoj 1022 SJ定理

    与传统的SG游戏不同的是,完成最后一个状态的人是输的,我们把这一类问题称作Anti-SG,这类问题的解决我们需要引入一个定理—SJ定理: 对于任意一个Anti-SG游戏,如果我们规定当局面中所有的单一 ...

  6. win8优化

    微软发布win8系统之后受到很多电脑爱好者的关注,都想去尝试体验win8操作系统,对电脑系统优化和系统性能提高一直是我们所追求的.而很多用户都会选择第三方软件对系统进行相关优化,其实我们可以手动对电脑 ...

  7. HDU1083(二分图最大匹配vector实现)

    Courses Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  8. 常见协议基础知识总结--FTP协议

    FTP协议是一种基于客户端和服务器的文件传输协议,属于应用层协议,基于传输层的TCP协议: FTP主要分成主动模式和被动模式两种传输方式, 方式是相对服务器而言的,服务器主动发起数据连接即主动方式,使 ...

  9. C++实现高斯滤波器

    在matlab中,我们经常用到高斯滤波器,生成滤波器一般都是这样的函数psf =   fspecial('gauss', GaussSize, sigma),但是在vs2010中用到的高斯滤波器不能自 ...

  10. iOS设计模式 —— KV0

    刨根问底KVO KVO 全称 Key-Value Observing.中文叫键值观察.KVO其实是一种观察者模式,观察者在键值改变时会得到通知,利用它可以很容易实现视图组件和数据模型的分离,当数据模型 ...