十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
创建一个大小为K的数据容器,利用最大堆找到最大。
公司主营业务:成都网站设计、成都网站建设、外贸网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出滨海免费做网站回馈大家。
创建一个大小为K的数据容器来存储最小的K个数,然后遍历整个数组,将每个数字和容器中的最大数进行比较,如果这个数大于容器中的最大值,则继续遍历,否则用这个数字替换掉容器中的最大值。
安全哈希加密技术,是当今世界最先近的加密算法。主要用于文件身份识别、数字签名和口令加密等。对于长度小于64位的消息A,SHA1会产生一个160位的消息摘要B。通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算转换成报文摘要,报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,如果不一致表示明文已被篡改。
打开IDLE python GUI,点击开始-所有程序-python2.7-IDLE python GUI,或者直接进入dos环境,或者其他的IDLE。
请点击输入图片描述
首先,创建一个简单的自定义函数,定义为K函数。
请点击输入图片描述
假如x==Kill,那么,就可以代入刚才所创建的K函数,最后返回一个语句,x为任意字符,空白字符也可以。
请点击输入图片描述
要注意的是,用def创建函数的时候,k(x)括号里面是不用双引号的,而调用自定义函数的时候,在括号了就要加上双引号。
上面的定义函数比较简单,只用了一个print输出语句,现在,定义一个累加的函数,就要用到while函数和if函数了。
请点击输入图片描述
A函数是用来计算累加的,其中用到了一个while循环和if判断,x为自定义变量,假如现在X为100,也就是说此函数计算1+2+3+...+100的和。
请点击输入图片描述
1、cmd007 作为自定义命令名称
2、cmd007 hello --name=Lily 作为自定义功能1的名称hello打招呼,输出:Hi, Lily
3、cmd007 eat --food=fish 作为自定义功能2的名称food吃东西,输出:I like to eat fish
(一)目录结构如下:
cmd007 # 文件夹必须和自定义命令同名
│ __init__.py
│ __main__.py
(二)实现自定义命令和功能1
在__main__.py中
View Code
来到cmd007的上级目录下,调出命令行客户端,执行命名:
python cmd007
python cmd007 -V
python cmd007 hello --name=Lily --count=3
python cmd007 hello -n Lilei -c 2
分别输出:
提示:如果将这个python包cmd007打包发布,然后安装到python中去,那么每行命令就不用输入python关键字了。
(三)实现自定义命令、功能1、功能2
在__main__.py中增加代码
# 自定义功能2:eat
@cli.command(name="eat")
@click.option('-f', '--food', help="please input your like food")
@click.option('-a', '--and-you', help="ask echo other", default=False)
def hello_command(food, and_you):
print("I like to eat {0}".format(food))
if and_you in ['t', 'T', 'true', 'True', True, 1, "1"]:
print("And what is your favorite food ?")
完整版:
View Code
执行
python cmd007 eat -f fish --and-you=1
输出
延伸:
@click.option()中的参数详解:
每个参数解释如下:
name or flags - 选项字符串的名字或者列表,例如 foo 或者 -f, --foo。
action - 命令行遇到参数时的动作,默认值是 store。
store_const,表示赋值为const;
append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
append_const,将参数规范中定义的一个值保存到一个列表;
count,存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;
nargs - 应该读取的命令行参数个数,可以是具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
const - action 和 nargs 所需要的常量值。
default - 不指定参数时的默认值。
type - 命令行参数应该被转换成的类型。
choices - 参数可允许的值的一个容器。
required - 可选参数是否可以省略 (仅针对可选参数)。
help - 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息.
metavar - 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.
关于编程,有三种方式
1、面向对象编程----类 关键字:class
2、面向过程编程----过程 关键字:def
3、函数式编程------函数 关键字:def
函数式编程:函数是逻辑化结构化和过程化的一种编程方式,如
def test(x):
"xxxxx"
x+=1
return x
def:定义函数的关键字
test:函数名称
(x):传入函数的参数
x+=1:泛指逻辑处理块代码
"xxxx"函数描述(非必要,但强列建议添加)
定义一个过程,过程无返回值
def fun1():
"fun1"
print('fun1')
定义一个函数,函数有返回值
def fun2():
"fun2"
print('fun2')
return 0
函数和过程的调用是一致的:
fun1
fun2
在python中,过程就是一个没有返回值的函数,过程默认返因一个none,当函数有多个返回值时,将返回元组,这些值将被当做一个元组的元素,即:
返回值个数0:返回NONE
返回值个数1:返回object
返回值个数多个:返回元组
函数的功能:没有函数的编程只是在写逻辑(功能),脱离函数,重用逻辑(实现功能),唯一的方式就是复制粘贴,使用函数后简化代码,可读性变高,易扩展(保持一致性)
在定义函数时的参数,我们称为行参,如下面的x,y
而调用函数时传入的参数,我们称之为实参,如下面的1、2。
def test(x,y)
print(x)
print(y)
test(1,2)
位置调用时行参与实参的位置关系是一一对应的
def test(x,y)
print(x)
print(y)
test(1,2)
关键字调用时,与实参的位置无关如
def test(x,y)
print(x)
print(y)
test(y=2,x=3)
当位置调用与关键字调用混用时,按照位置调用方式执行,但要记位一句话,关键字参数不能写在位置参数前面,即test(3,y=2,6)此种方式将会报错,应写成test(3,2,z=6)或test(3,z=2,y=6)
当函数中有默认的参数值时如
def test(x,y=1)
.....
return 0
当调用这个函数时,如果不传入y的值时,y的值将采用默认值,如果传入新的y的值时,默认y的值将被覆盖。
默认值使用的场合:
1、软件安装的时候
2、连接数据库的端口
等
参数组:当行参或实参数量不固定的时候时使用,可与默认参数或行参混用,参数组一定要最至最后
def test(*args)#接收N个位置参数 #def test(name,*args) #def test(name,age=1,*args)
print(args)
test(1,2,3,4,5……)
test(*[1,2,3,4……])
最终实参会被变成一个元组如:
def fun(agr1,agr2,*args)
pass
fun(1,2,3,4,5)
====结果=====
1,2,(3,4,5)
这种方式是预留以后当需要传多个参数时使用而不变动太多的代码
传入不定数量字典时:把N个关键字参数转换成字典的方式,可与默认参数或行参混用,参数组一定要最至最后
def test(agrs1,agrs2,**kwargs) #接收N个关键字参数
# print(kwagrs)
# print(kwagrs['name'])
# print(kwagrs['age'])
pass
test(3,5,name='a',age=23,sex='F')#以关键字的方式传值
=====结果====
3,5,{'name':'a','age':23,'sex':'f'}
test(**{name:'a',age:8,sex:'F'})
###位置参数不能写在关键字参数后面,否则程序会报错
函数调用函数
def test1()
print......
def test2()
print...
test1() #调用test1
print(test2()) #调用