python 运维自动化之路 Day2

学习内容:

1、模块初识

2、Pyc是什么

3、Python数据类型

4、数据运算

5、bytes数据类型

6、列表和元组的使用

7、字符串常用操作

8、字典的使用

1、模块初识

如果用 python 解释器来编程,从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。

为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。

模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。

下面是一个使用 python 标准库中模块的例子。

 

import sys
print(sys.path)
print(sys.argv)
# print(sys.argv[1])
import os
os.system("dir") #调用系统命令dir,不保存结果。
print(os.popen('dir').read())  #打开总读取当前目录从内存地址中。
os.mkdir('new_quote3') #创建新目录
print(os.popen('dir').read())

 

执行结果如下:

C:\Users\hca006\AppData\Local\Programs\Python\Python36\python.exe "D:/python app/var/day2/sysmodel.py"
['D:\\python app\\var\\day2', 'D:\\python app\\var', 'C:\\Users\\hca006\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip', 'C:\\Users\\hca006\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\hca006\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\hca006\\AppData\\Local\\Programs\\Python\\Python36', 'C:\\Users\\hca006\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages']
['D:/python app/var/day2/sysmodel.py']������ D �еľ��� ����������к��� 08BD-E367D:\python app\var\day2 ��Ŀ¼2017/04/07  20:38    <DIR>          .
2017/04/07  20:38    <DIR>          ..
2017/04/07  20:18             2,015 dictionary.py
2017/04/07  18:46             1,048 dictionary22.py
2017/03/28  08:19             1,819 list.py
2017/03/29  16:45             1,657 mycopy.py
2017/03/29  15:21               145 mydeepcopy.py
2017/04/07  20:35    <DIR>          new_quote2
2017/03/29  20:14             1,483 shop.py
2017/04/07  20:38               312 sysmodel.py
2017/03/29  19:55               535 tmall.py
2017/04/07  15:27               741 zifucuang.py
2017/03/23  19:20                19 __init__.py
2017/03/29  15:24    <DIR>          __pycache__10 ���ļ�          9,774 �ֽ�4 ��Ŀ¼ 396,468,563,968 �����ֽ�驱动器 D 中的卷是 工作卷的序列号是 08BD-E367D:\python app\var\day2 的目录2017/04/07  20:38    <DIR>          .
2017/04/07  20:38    <DIR>          ..
2017/04/07  20:18             2,015 dictionary.py
2017/04/07  18:46             1,048 dictionary22.py
2017/03/28  08:19             1,819 list.py
2017/03/29  16:45             1,657 mycopy.py
2017/03/29  15:21               145 mydeepcopy.py
2017/04/07  20:35    <DIR>          new_quote2
2017/03/29  20:14             1,483 shop.py
2017/04/07  20:38               312 sysmodel.py
2017/03/29  19:55               535 tmall.py
2017/04/07  15:27               741 zifucuang.py
2017/03/23  19:20                19 __init__.py
2017/03/29  15:24    <DIR>          __pycache__10 个文件          9,774 字节4 个目录 396,468,563,968 可用字节驱动器 D 中的卷是 工作卷的序列号是 08BD-E367D:\python app\var\day2 的目录2017/04/07  20:38    <DIR>          .
2017/04/07  20:38    <DIR>          ..
2017/04/07  20:18             2,015 dictionary.py
2017/04/07  18:46             1,048 dictionary22.py
2017/03/28  08:19             1,819 list.py
2017/03/29  16:45             1,657 mycopy.py
2017/03/29  15:21               145 mydeepcopy.py
2017/04/07  20:35    <DIR>          new_quote2
2017/04/07  20:38    <DIR>          new_quote3
2017/03/29  20:14             1,483 shop.py
2017/04/07  20:38               312 sysmodel.py
2017/03/29  19:55               535 tmall.py
2017/04/07  15:27               741 zifucuang.py
2017/03/23  19:20                19 __init__.py
2017/03/29  15:24    <DIR>          __pycache__10 个文件          9,774 字节5 个目录 396,468,563,968 可用字节Process finished with exit code 0
View Code

当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。

搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 ,需要把命令放在脚本的顶端。

2、Pyc是什么

简述Python的运行过程

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

.Pyc文件是存储预编译后的一个字节码文件。

3、Python数据类型

1.数字

Python 数字数据类型用于存储数值。

数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间。

Python 支持三种不同的数值类型:

  • 整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
  • 浮点型(float) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
  • 复数( (complex)) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

Python 数字类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

  • int(x) 将x转换为一个整数。

  • float(x) 将x转换到一个浮点数。

  • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

  • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

以下实例将浮点数变量 a 转换为整数:

>>> a = 1.0
>>> int(a)
1
2.布尔值
真或假
1 或 0
3.字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。例如:
var1 = 'Hello World!'
var2 = "dnvwjy"

4、数据运算

算数运算:

比较运算:

赋值运算:

逻辑运算:

成员运算:

身份运算:

位运算:

 

运算符优先级:

计算机中能表示的最小单位,是一个二进制位

计算机中能存储的最小单位,是一个二进制位(bit)

8bit = byte(字节)

1024byte = 1Kbyte

1024Kbyte = 1Mbyte

1024Mb = 1Gb

1024Gb= 1T

5、bytes数据类型

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,正是这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事

不管怎样,字符串和字节包之间的界线是必然的,下面的图解非常重要,务请牢记于心:

 

字符串可以编码成字节包,而字节包可以解码成字符串。

>>>'€20'.encode('utf-8')
b'\xe2\x82\xac20'
>>> b'\xe2\x82\xac20'.decode('utf-8')
'€20'

这个问题要这么来看:字符串是文本的抽象表示。字符串由字符组成,字符则是与任何特定二进制表示无关的抽象实体。在操作字符串时,我们生活在幸福的无知之中。我们可以对字符串进行分割和分片,可以拼接和搜索字符串。我们并不关心它们内部是怎么表示的,字符串里的每个字符要用几个字节保存。只有在将字符串编码成字节包(例如,为了在信道上发送它们)或从字节包解码字符串(反向操作)时,我们才会开始关注这点。

传入encode和decode的参数是编码(或codec)。编码是一种用二进制数据表示抽象字符的方式。目前有很多种编码。上面给出的UTF-8是其中一种,下面是另一种:

>>'€20'.encode('iso-8859-15')
b'\xa420'
>>> b'\xa420'.decode('iso-8859-15')
'€20'

编码是这个转换过程中至关重要的一部分。离了编码,bytes对象b'\xa420'只是一堆比特位而已。编码赋予其含义。采用不同的编码,这堆比特位的含义就会大不同:

>>> b'\xa420'.decode('windows-1255')
'₪20'

三元运算:result = 值1 if 条件 else 值2

>>> a,b,c = 1,3,5
>>> a
1
>>> b
3
>>> c
5
>>> d = b if c>a else 7
>>> d
3
>>> d = b if c<a else 7
>>> d
7

 

 

6、元组和列表的使用

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

# 列表、元组操作
names = ['胡汉','友兰','姬发','明程','国梁']
print (names[1:3])  #打印names列表的值从第2个开始至第四个结束
print(names)
print(names[-2:])   #打印最后两个,-1表示最后一个。如果写成-2:0打印为空,因为切片是从左往右切。
print (names.index('姬发'))   #打印索引下标
print (names[names.index('姬发')])  #打印索引下标的值
print (names[:1])  #前面的0可以忽略
View Code

执行结果如下:(Python 列表的下标从0开始)

['友兰', '姬发']
['胡汉', '友兰', '姬发', '明程', '国梁']
['明程', '国梁']
2
姬发
['胡汉']Process finished with exit code 0
View Code

追加、修改、插入和删除(在修改列表的时候,只能通过下标索引,不能直接写值)

names = ['胡汉','友兰','姬发','明程','国梁']
names.append(2001)  #追加,默认追加到列表最后。
print (names)
names.insert(1,2002)    #在列表内1的下标位置插入值。
print (names)
names[3]='宇亮'
print (names)
names[names.index('明程')]='江夏'   #在不知道下标的情况下修改列表内的值,在修改的时候只能用下标,#如果写成names['明程']='江夏'是错误的!
print (names)
names.remove(2002)      #移除列表内的值
print (names)
del names[5]        #删除列表内下标为5的值,凡是列表后面用[]括起,方法用()括起。
print (names)
names.pop(1)        #删除列表内下标为1的值,等同于del names[]
print (names)
names.pop()         #空值表示删除最后一个值。
print (names)
names2 = [1,2,3,5]
del names2      #删除变量
print (names.count('江夏'))       #统计数量
names.reverse()         #列表反转
print(names)
View Code

执行结果如下:

['胡汉', '友兰', '姬发', '明程', '国梁', 2001]
['胡汉', 2002, '友兰', '姬发', '明程', '国梁', 2001]
['胡汉', 2002, '友兰', '宇亮', '明程', '国梁', 2001]
['胡汉', 2002, '友兰', '宇亮', '江夏', '国梁', 2001]
['胡汉', '友兰', '宇亮', '江夏', '国梁', 2001]
['胡汉', '友兰', '宇亮', '江夏', '国梁']
['胡汉', '宇亮', '江夏', '国梁']
['胡汉', '宇亮', '江夏']
1
['江夏', '宇亮', '胡汉']Process finished with exit code 0
View Code

列表的排序和合并

a = ['abc','acb','aac','abc']
print(a)
a.sort()        #列表排序,默认升序。
print(a)
b = [4,2,5,6,1,7]
print(b)
b.sort()
print(b)
c = ['a','B','Pang','pang']
print (c)
c.sort()
print (c)
c.extend(b)     #列表合并
print (c)
View Code

执行结果如下:不同类型的数据类型不能排序。

['abc', 'acb', 'aac', 'abc']
['aac', 'abc', 'abc', 'acb']
[4, 2, 5, 6, 1, 7]
[1, 2, 4, 5, 6, 7]
['a', 'B', 'Pang', 'pang']
['B', 'Pang', 'a', 'pang']
['B', 'Pang', 'a', 'pang', 1, 2, 4, 5, 6, 7]Process finished with exit code 0
View Code

列表的copy

列表中可以包含列表,但是子列表的存在只是一个内存指针,在copy的时候只是浅copy,子列表是单独指向的一个内存地址,修改列表1列表2也会变。

浅copy:

import copylist1 = ['zhangming','huhan',[100,200]]
list2 = list1.copy()
print (list1)
print (list2)list1[2] = [50,300]         #改列表的第一层,不影响第二层的值。此时list2的第二层还是[100,200]
print (list1)
print (list2)
print (list1[:-1])      #列表切片,从第一个下标开始至最后一个下标,但不包含最后一个下标。
View Code

结果如下:

['zhangming', 'huhan', [100, 200]]
['zhangming', 'huhan', [100, 200]]
['zhangming', 'huhan', [50, 300]]
['zhangming', 'huhan', [100, 200]]
['zhangming', 'huhan']
View Code

修改子列表浅copy的列表值也会跟着改变:

import copylist1 = ['zhangming','huhan',[100,200]]
list2 = list1.copy()list1[0] = 'tiezi'  #改列表的第一层,
print (list1)       #第一层的值变了,
print (list2)       #浅copy内的值不会变。
list1[2][0] = 200    #如果修改列表1内子列表内的值,
print (list1)       #则子列表内的值会变,
print (list2)       #列表2子列表内的值也会变。因为子列表是单独存在的一个内存记录。在列表内是作为一个指针存在。
list2[2][1] = 500
print (list1)
print (list2)
View Code

如果如下:

['tiezi', 'huhan', [100, 200]]
['zhangming', 'huhan', [100, 200]]
['tiezi', 'huhan', [200, 200]]
['zhangming', 'huhan', [200, 200]]
['tiezi', 'huhan', [200, 500]]
['zhangming', 'huhan', [200, 500]]Process finished with exit code 0
View Code

深copy:

# author:dnvwjy
import copylist3 = ['wangyi','chexiao','huilong',['yutong','CRT']]
list4 = copy.deepcopy(list3)            #深copy,就是完全克隆一份一模一样的,而且是独立的占一份内存地址。
print (list3)
print (list4)
list3[3][0] = 'HM'
print (list3)
print (list4)
View Code

执行结果如下:

['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
['wangyi', 'chexiao', 'huilong', ['HM', 'CRT']]
['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]Process finished with exit code 0
View Code

列表的循环打印、切片以及步长切片:

list3 = ['wangyi','chexiao','huilong',['yutong','CRT']]for i in list3:print (i)       #列表的循环打印#列表的切片 和 步长切片
print (list3[0:-1:2])
print (list3[::2])      #0和-1都可以省略。
print (list3[:])
#浅copy的三种实现形式
list5 = copy.copy(list3)
list6 = list3[:]
list7 = list(list3)
print ('list5:',list5)
print ('list6:',list6)
print ('list7:',list7)
list3[3][0] = 1
print ('list5:',list5)
print ('list6:',list6)
print ('list7:',list7)
View Code

结果如下:

wangyi
chexiao
huilong
['yutong', 'CRT']
['wangyi', 'huilong']
['wangyi', 'huilong']
['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
list5: ['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
list6: ['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
list7: ['wangyi', 'chexiao', 'huilong', ['yutong', 'CRT']]
list5: ['wangyi', 'chexiao', 'huilong', [1, 'CRT']]
list6: ['wangyi', 'chexiao', 'huilong', [1, 'CRT']]
list7: ['wangyi', 'chexiao', 'huilong', [1, 'CRT']]Process finished with exit code 0
View Code

元组:

元组就是列表,但是不能删和改。元组又叫只读列表,元组用小括号()括号,只有两个参数(count/index),列表用中括号[]括起。

#元组--英文tuple,用小括号表示()
tuple=('apple','eggs')
print(tuple.count('apple'))     #统计
print(tuple.index('apple'))     #索引
del tuple       #删除元组
View Code

7、字符串常用操作

特性:不可修改,可以切片

复制代码
name.capitalize()  首字母大写
name.casefold()   大写全部变小写
name.center(50,"-")  输出 '---------------------Alex Li----------------------'
name.count('lex') 统计 lex出现次数
name.encode()  将字符串编码成bytes格式
name.endswith("Li")  判断字符串是否以 Li结尾"Alex\tLi".expandtabs(10) 输出'Alex      Li', 将\t转换成多长的空格 name.find('A')  查找A,找到返回其索引, 找不到返回-1 format :>>> msg = "my name is {}, and age is {}">>> msg.format("alex",22)'my name is alex, and age is 22'>>> msg = "my name is {1}, and age is {0}">>> msg.format("alex",22)'my name is 22, and age is alex'>>> msg = "my name is {name}, and age is {age}">>> msg.format(age=22,name="ale")'my name is ale, and age is 22'
format_map>>> msg.format_map({'name':'alex','age':22})'my name is alex, and age is 22'msg.index('a')  返回a所在字符串的索引
'9aA'.isalnum()   True'9'.isdigit() 是否整数
name.isnumeric  
name.isprintable
name.isspace
name.istitle
name.isupper"|".join(['alex','jack','rain'])
'alex|jack|rain'maketrans>>> intab = "aeiou"  #This is the string having actual characters. >>> outtab = "12345" #This is the string having corresponding mapping character>>> trantab = str.maketrans(intab, outtab)>>> >>> str = "this is string example....wow!!!">>> str.translate(trantab)'th3s 3s str3ng 2x1mpl2....w4w!!!'msg.partition('is')   输出 ('my name ', 'is', ' {name}, and age is {age}') >>> "alex li, chinese name is lijie".replace("li","LI",1)'alex LI, chinese name is lijie'msg.swapcase 大小写互换>>> msg.zfill(40)
'00000my name is {name}, and age is {age}'>>> n4.ljust(40,"-")
'Hello 2orld-----------------------------'
>>> n4.rjust(40,"-")
'-----------------------------Hello 2orld'>>> b="ddefdsdff_哈哈" 
>>> b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
True

补充字符串操作:

name = 'tangcao'
print(name.capitalize())
print(name.capitalize())
print('abc'.isalnum())
print('16AC'.isdecimal())
print('a16AC-'.isidentifier())
print('-'.join(['alum','fifle','firebord']))
print (name.ljust(30,'+'))
print (name.rjust(30,'+'))
print ('AAAA'.lower())
print ('aaaa'.upper())
print ('\t   \nccccc\n'.lstrip())
print ('++++\t11')s=str.maketrans('abcdefg','1234567')
print('my name is nana'.translate(s))
print('fuck off'.replace('f','6',1))
print('fuck off'.rfind('f'))
print ('fuck off'.split('f'))
print ('fu\nck of\nf'.splitlines())
print('fUCK oFF'.swapcase())
print ('dnvwjy'.zfill(30))
View Code

执行结果如下:

Tangcao
Tangcao
True
False
False
alum-fifle-firebord
tangcao+++++++++++++++++++++++
+++++++++++++++++++++++tangcao
aaaa
AAAA
ccccc++++    11
my n1m5 is n1n1
6uck off
7
['', 'uck o', '', '']
['fu', 'ck of', 'f']
Fuck Off
000000000000000000000000dnvwjy
View Code

8、字典的使用

字典是一种key-value的数据类型

特性:无序,key必须是唯一的,所以天生去重!

info = {'stu1101': 'TengLan wu','stu1102': 'LongZe Luola','stu1103': 'XiaoZe Maliya',
}
print(info)
print(info['stu1102'])
info['stu1101'] = '武藤兰'     #修改字典对应key的值
info['stu1104'] = 'cangjinkong'     #没有相应的KEY就添加一条记录。
print (info)#del info['stu1101']     #删除字典内KEY对应的KEY和值。
#del info   #删除整个字典    DEL是Python内置的删除通用方法。
info.pop('stu1101')     #删除
info.popitem()      #随机删除一个
#查找
# info['stu1105']     #没有相应的KEY就出错啦!
# print(info['stu1105'])  #KeyError:'stu1105'
print(info.get('stu1105'))  #查找字典KEY的正确打开方式!
#判断key是否在字典内:
print('stu1105'in info) #等同于PY2.X info.has_key('stu1102')#PY3.X没有了这种方法。#返回布尔值
c = {'stu1101':'dnvwjy',1:3,2:5,}
info.update(c)      #更新,合并字典,有重复就替换。
print(info.items())     #把字典转换成列表
# s = info.fromkeys({6,7,8},'test')   #这里跟info没有任何关系可以写成dict
s = dict.fromkeys([6,7,8],[2,{'name':'lexe'},444])      #fromkeys(key,values),这里的value是一个列表的数据类型
s[8][1]['name']='dbv'       #[key][列表][列表下的值]
s[8][2]='dccv'       #[key][列表][列表下的值],共享的一个内存地址所以列表内的值全改了!如果只有一层就没问题。print (s)
print (info)
#列表的循环:             print (i,info(i))#TypeError: 'dict' object is not callable
for i in info:print (i,info[i])       #这里不能用(),要用[]在字典内取值。for k,j in info.items():        #两个字典循环的结果都一样,但是上面一种更加高效,因为第二种循环需要转换为列表,如果数据#量非常大,运行速度也会变得非常慢。print(k,j)
View Code

结果:

C:\Users\hca006\AppData\Local\Programs\Python\Python36\python.exe "D:/python app/var/day2/dictionary.py"
{'stu1101': 'TengLan wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
LongZe Luola
{'stu1101': '武藤兰', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'cangjinkong'}
None
False
dict_items([('stu1102', 'LongZe Luola'), ('stu1103', 'XiaoZe Maliya'), ('stu1101', 'dnvwjy'), (1, 3), (2, 5)])
{6: [2, {'name': 'dbv'}, 'dccv'], 7: [2, {'name': 'dbv'}, 'dccv'], 8: [2, {'name': 'dbv'}, 'dccv']}
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': 'dnvwjy', 1: 3, 2: 5}
stu1102 LongZe Luola
stu1103 XiaoZe Maliya
stu1101 dnvwjy
1 3
2 5
stu1102 LongZe Luola
stu1103 XiaoZe Maliya
stu1101 dnvwjy
1 3
2 5Process finished with exit code 0
View Code

 

字典的多级嵌套

# author:dnvwjy

av_catalog = {"欧美":{"www.youporn.com": ["很多免费的,世界最大的","质量一般"],"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],"x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]},"日韩":{"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]},"大陆":{"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]}
}
av_catalog['大陆']['1024'][0] += ',还有91pron' #修改
# print (av_catalog.values())     #打印values
# print (av_catalog.keys())       #打印keys
av_catalog.setdefault('taiwang',{'123':['www.baidu.com']})
#setdefault,如果字典内没有就添加,如果有就返回,不添加。
av_catalog.setdefault('taiwang',{'456':['www.baidu.com']})
print( av_catalog.items())
# print (av_catalog)
View Code
C:\Users\hca006\AppData\Local\Programs\Python\Python36\python.exe "D:/python app/var/day2/dictionary22.py"
dict_items([('欧美', {'www.youporn.com': ['很多免费的,世界最大的', '质量一般'], 'www.pornhub.com': ['很多免费的,也很大', '质量比yourporn高点'], 'letmedothistoyou.com': ['多是自拍,高质量图片很多', '资源不多,更新慢'], 'x-art.com': ['质量很高,真的很高', '全部收费,屌比请绕过']}), ('日韩', {'tokyo-hot': ['质量怎样不清楚,个人已经不喜欢日韩范了', '听说是收费的']}), ('大陆', {'1024': ['全部免费,真好,好人一生平安,还有91pron', '服务器在国外,慢']}), ('taiwang', {'123': ['www.baidu.com']})])Process finished with exit code 0
View Code

 

总结:

想学好Python一定要多动手写代码,要猛戮键盘!:P    不然看得再多也枉然!

鸭梨山大!

 

转载于:https://www.cnblogs.com/dnvwjy/p/6680326.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql多源复制 知乎_MySQL多主一从(多源复制)同步配置

&#xfeff;>多主一从&#xff0c;也称为多源复制&#xff0c;数据流向。这是小编的服务器部署的一次小尝试&#xff0c;实际工作中还没遇到过形式主库1 -> 从库s主库2 -> 从库s主库n -> 从库s应用场景数据汇总&#xff0c;可将多个主数据库同步汇总到一个从数据库…

关于算法模板和规范的说明

这里记录的算法模板和规范仅供个人使用&#xff0c;可能会存在BUG。由于使用本博客模板导致的BUG及其负面影响&#xff0c;本人概不负责。转载于:https://www.cnblogs.com/hzs2000/p/6682699.html

aMDcpu不支持mysql_Oracle 11.2.0.1在AMD CPU 64位硬件,32位操作系统下的BUG 8670579

通过查询meatlink原因是在ORACLE11.2.0.1 AMD 64位CPU下安装了32位的操作系统&#xff0c;触发了bug 8670579&#xff0c;那要解决该问题只需打上86705bug 8670579硬件信息&#xff1a;CPU:AMD X6在执行dbca的时候也报错如下&#xff1a;[Oracleyorkshi ~]$ dbca## An unexpect…

《网络攻防》第6周作业

20169310 2016-2017-2 《网络攻防实践》第6周学习总结 教材学习内容总结 本周主要学习了《网络攻防---技术与实践》第5、6章的内容&#xff0c;主要学习了 TCP/IP网络协议攻击 和 网络安全防范技术 TCP/IP网络协议攻击概述 网络安全的属性&#xff1a;机密性 、完整性 、可用性…

python读ad域日志_Python实现AD域认证

Python 通过ldap进行ad域账号的校验。首先需要安装python-ldap的模块 http://www.python-ldap.org/。 在这里用的是windows系统&#xff0c;当然比较容易&#xff0c;下载地址 http://pypi.python.org/pypi/python-ldap/。安装后在python 的交互环境里输入import ldap 如果没有…

nios ii小实验——第一个demo指导书

1.新建工程&#xff1a;打开Quartus II 13.0&#xff0c;点击File->New Project Wizard&#xff0c;点击Next后可以看到如图2所示的对话框&#xff0c;选择工程路径给工程命名&#xff08;注意&#xff1a;工程名必须和顶层模块名一致&#xff0c;否则编译会报错&#xff09…

js动态时间(转)

html代码 <span id"timeShow" show_cur_times()></span>js代码 $(function(){//设置1秒调用一次show_cur_times函数setInterval("show_cur_times()",100); });function show_cur_times(){ //获取当前日期var date_time new Date();//定义星期…

shell设计精髓_交互设计精髓

了解数字产品的设计过程工业设计师 Victor Papanek 认为&#xff0c;设计是“为赋予有意义的秩序&#xff0c;作出有意识或直觉的努力”。“All men are designers. All that we do, almost all the time is design, for design is basic to all human activity. The planning …

谈谈我对Javascript中This对象的理解

this 指针的隐式赋值 this总是指向调用该方法的对象&#xff1b; 在事件中&#xff0c;this指向触发这个事件的对象&#xff0c;特殊的是&#xff0c;IE中的attachEvent中的this总是指向全局对象Window&#xff1b; 显示操纵 this 指针 Javascript引擎通过以下两种方式允许我们…

mysql获取下一条自增的id_mysql获取一个表中的下一个自增(id)值的方法

mysql获取一个表中的下一个自增(id)值的方法MySQL: Get next AUTO_INCREMENT value from/for tableNote to self: To get the next auto_increment value from a table run this query: SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA $dbName AND…

WebStorm 快捷键整理

我用的是WebStorm11 2016的版本&#xff0c;个人感觉非常不错&#xff0c;现在整理下快捷键。  Ctrl/ 或 CtrlShift/注释&#xff08;// 或者/*…*/ &#xff09;ShiftF6重构-重命名CtrlX剪切行CtrlD复制并粘贴行CtrlG查找行CtrlShiftUp/Down代码快向上/下移动。F2 或ShiftF2高…

mysql云数据库 磁盘利用率_云数据库MySQL参数的那些事儿

MySQL数据库参数是数据库系统运行的关键配置信息&#xff0c;设置不合适的参数值可能会影响业务。本文列举了一些重要参数说明&#xff0c;更多参数详细说明&#xff0c;请参见MySQL官网。修改敏感参数若干参数相关说明如下&#xff1a;“lower_case_table_names;”:云数据库默…

Swift3 Scanner用法之判断是否数字、提取字符串里的数字

1、判断是否数字 /// 判断是否是数字////// - Parameter string: <#string description#>/// - Returns: <#return value description#>class func isPurnInt(string: String) -> Bool {let scan: Scanner Scanner(string: string)var val:Int 0return scan.s…

mysql客户端查询_MySQL数据库之利用mysql客户端查询UCSC数据库

本文主要向大家介绍了MySQL数据库之利用mysql客户端查询UCSC数据库 &#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习MySQL数据库有所帮助。UCSC Genome Browser是由University of California Santa Cruz (UCSC) 创立和维护的&#xff0c;该站点包含有人类、小…

算法交易系列研究之一

一、算法交易的概念 &#xff08;一&#xff09;什么是算法交易 算法交易&#xff08;Algorithmic Trading&#xff09;是一种程序化交易方式&#xff0c;它将交易者和市场有机地联系起来。算法交易通常可以减少这两者之间的摩擦&#xff0c;或者说在一定程度上可以降低交易对市…

mysql支持的时区列表_mysql按天分组支持时区

时区问题总是个比较麻烦的问题&#xff0c;客户端与服务器的时区不一致自然是理所当然的事情&#xff0c;而对于多台服务器或者分布式再或者炙手可热的云&#xff0c;时区不统一也很正常&#xff0c;而且也不需要统一&#xff0c;还好有个时间戳的概念&#xff0c;通过时间戳就…

IOS多线程之Block编程

1 什么是block iOS SDK 4.0開始&#xff0c;Apple引入了block这一特性。字面上说&#xff0c;block就是一个代码块。可是它的奇妙之处在于在内联(inline)运行的时候(这和C非常像)还能够传递參数。同一时候block本身也能够被作为參数在方法和函数间传递。这就给予了block无限的可…

python查找两个数组中相同的元素_匹配两个numpy数组以找到相同的元素

使用熊猫&#xff1a;import pandas as pdid1 pd.read_csv(id1.txt)id2 pd.read_csv(id2.txt)df id1.merge(id2.sort_values(byID2).drop_duplicates(ID2).rename(columns{ID2:ID1}))print(df)产生&#xff1a;^{pr2}$对于大型数据集&#xff0c;您可能需要执行以下操作&…

Spring3系列7- 自动扫描组件或Bean

原文地址 &#xfeff;&#xfeff;http://www.cnblogs.com/leiOOlei/p/3547589.html 一、 Spring Auto Scanning Components —— 自动扫描组件     1. Declares Components Manually——手动配置component 2. Auto Components Scanning——自动扫描组件 3…

数据插不进mysql_数据插入不进数据库里面去。

1&#xff1a;index.php提交到&#xff1a;index_ok.php2:连接数据库文件&#xff1a;conn.php<?php $idmysql_connect("localhost","root","root")ordie(连接失败:.mysql_error());if(mysql_select_db("db_databas...1&#xff1a;ind…