LearnPython_week3
函数说明
1 # -*- coding:utf-8 -*-
2 # Author:Wong Du
3
4
5 ###函数,
6 # 能避免代码重复,
7 # 方便代码修改等操作
8 def wong():
9 print('I am wong..')
10 wong()
11 #输出:I am wong..
12
13 ###形参和实参
14 def calc(x,y): #x,y是形式参数,即形参
15 print('计算结果:',x**y) #计算x的y次方
16 calc(2,5) #2,5是实际参数,即实参
17 #输出:计算结果: 32
18
19 ###默认参数,
20 # 默认参数可以理解成为形参赋一个实际值,
21 # 即当函数调用没有为默认参数赋值时,默认参数使用默认值
22 def calc(x,y=2): #x,y是形式参数,即形参;2是y的默认值
23 print('计算结果:',x**y) #计算x的y次方
24 calc(2) #默认参数可不予赋值,此时y=2,所以输出结果为4
25 calc(2,5) #可为默认参数赋值,此时y=5,所以输出结果为32
26
27 ###位置参数和关键字参数,
28 # 位置参数遵循函数形参的先后顺序,
29 # 关键字参数则相当于变量赋值,
30 # 函数调用时,会先匹配位置参数,再匹配关键字参数,
31 # 所以同时使用位置参数和关键字参数赋值时,位置参数要在关键字参数的前面
32 def calc(x,y=2):
33 print('计算结果:',x**y) #计算x的y次方
34 calc(2,3) #位置参数方式赋值,遵循顺序
35 calc(y=2,x=5) #关键词参数方式赋值,可不遵循顺序
36 calc(2,y=5) #混合方式赋值,位置参数要在关键字参数前面
37 #calc(x=2,5) #会报错
38 #calc(2,x=5) #参数赋值两次,会报错
39 #输出:
40 '''
41 计算结果: 8
42 计算结果: 25
43 计算结果: 32
44 '''
45
46 ###返回值
47 def calc(x,y=2):
48 z = x**y #计算x的y次方
49 return z
50 calc(2,2)
51 print(calc(2,2))
52 #输出:4
53
54 ###不确定参数*args、**kwargs,
55 # 使用不确定参数可以为函数赋无数个值,
56 # 匹配*args的值会成为一个元组,
57 # 匹配到**kwargs的值会成为一个字典,
58 # 函数首次赋值是按顺序匹配的,所以如果有确定参数,位置应放在*args前
59 def calc(x,*args,**kwargs): #参数x应放在*args前面
60 print(x,args,kwargs)
61
62 calc(2,4,5,6,7,8,name='wong',age='23')
63 #输出:2 (4, 5, 6, 7, 8) {'name': 'wong', 'age': '23'}
64
65 ###全局变量和局部变量,
66 # 全局变量在整个程序内有效,
67 # 局部变量只在函数或其他子程序内有效
68 name = 'wong' #全局变量
69 def edit():
70 name = 'I am wong, my age is 23..' #局部变量
71 return name
72 print(name) #全局变量,没有改变
73 print(edit()) #局部变量,做了修改
74 #输出:
75 '''
76 wong
77 I am wong, my age is 23..
78 '''
79
80 ###嵌套函数,
81 # 嵌套函数和多层循环类似
82 def wong():
83 def wong2():
84 def wong3():
85 name = 'wong3'
86 print(name)
87 wong3()
88 name = 'wong2'
89 print(name)
90 wong2()
91 name = 'wong1'
92 print(name)
93
94 wong()
95 #输出:
96 '''
97 wong3
98 wong2
99 wong1
100 '''
101
102 ###递归,
103 # 在函数内部调用函数自身,叫做递归函数,
104 # 为防止内存栈溢出,python3默认只允许递归999次吧
105 def lef(count=0):
106 print('on the way..',count)
107 count += 1
108 return lef(count)
109
110 lef()
111 ###递归函数应用:二分查找
112 list = [1,3,4,6,7,9,11,14,17,19,22,25,28,33,34,36,38,47,55]
113 def func(list,find_num):
114 mid = int(len(list)/2)
115 if mid > 0:
116 if find_num == list[mid]:
117 print("找到数字",list[mid])
118 elif find_num < list[mid]:
119 print("数字%s在列表的左边,找到%s位置" %(find_num,list[mid]))
120 return func(list[0:mid],find_num)
121 else:
122 print("数字%s在列表的右边,找到%s位置" %(find_num,list[mid]))
123 return func(list[mid:],find_num)
124 else:
125 if list[mid] == find_num:
126 print("找到数字了:",list[mid])
127 else:
128 print("没得分了,你要找的数字%s不在列表里..." %find_num)
129
130 func(list,1)
131
132 ###高阶函数,
133 # 1 把一个函数名当做实参传给另一个函数,此函数称之为高阶函数,
134 # 2 return 返回值中包含函数名,也可以称之为高阶函数
135 import time
136 def source():
137 time.sleep(3)
138 print('I am source code..')
139 def bar(*args):
140 print(args)
141 start_time = time.time()
142 for i in args:
143 i()
144 stop_time = time.time()
145 print("The func run time is %s"%(stop_time-start_time))
146 #source()
147 bar(source)
148
149 # import time
150 # def source():
151 # time.sleep(3)
152 # print('I am source code..')
153 # def bar(func):
154 # start_time = time.time()
155 # func()
156 # stop_time = time.time()
157 # print("The func run time is %s"%(stop_time-start_time))
158 # return func
159 # #print(bar(source))
160 # source = bar(source)
161 # source()
162
163 ###匿名函数
164 def test1(x,y):
165 print(x*y)
166
167 test2 = lambda x,y:print(x*y)
168
169 test1(2,3)
170 test2(2,4)
171 #test1和test2效果一样
小程序
修改haproxy配置文件
global
log 127.0.0.1 local2
daemon
maxconn 256
log 127.0.0.1 local2 info
defaults
log global
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
option dontlognull listen stats :8888
stats enable
stats uri /admin
stats auth admin:1234 frontend oldboy.org
bind 0.0.0.0:80
option httplog
option httpclose
option forwardfor
log global
acl www hdr_reg(host) -i www.oldboy.org
use_backend www.oldboy.org if www backend www.jumpserver.org
server 100.1.7.8 weight 20 maxconn 3000
server 100.1.7.9 weight 20 maxconn 3000 backend www.caiyundo.cn
server 100.1.7.9 weight 32 maxconn 64
haproxy配置文件
1 # -*- coding:utf-8 -*-
2 # Author:Wong Du
3 arg = {
4 'backend':'',
5 'record':{
6 'server':'',
7 'weight':'',
8 'maxconn':''
9 }
10 }
11 def look():
12 with open('haproxy','r+',encoding='utf-8') as f:
13 backend = input("您要查找的记录:")
14 for line in f:
15 if ['backend',backend] == line.strip().split():
16 print(line.strip())
17 print(f.readline())
18 def add():
19 with open('haproxy','a+',encoding='utf-8') as f:
20 backend = input("新增的域名:")
21 arg['backend'] = backend
22 server = input("新增的serverip:")
23 arg['record']['server'] = server
24 weight = input("宽度:")
25 arg['record']['weight'] = weight
26 maxconn = input("最大conn:")
27 arg['record']['maxconn'] = maxconn
28 f.write('\nbackend '+ arg['backend'])
29 f.write('\n\t\tserver %s weight %s maxconn %s \n'% (arg['record']['server'],
30 arg['record']['weight'],
31 arg['record']['maxconn']))
32 def delete():
33 data = ''
34 with open('haproxy','r',encoding='utf-8') as f:
35 delwww = input("要删除的域名记录:")
36 for line in f:
37 if ['backend',delwww] == line.strip().split():
38 f.readline()
39 else:
40 data += line
41 with open('haproxy','w',encoding='utf-8') as f:
42 # for line2 in data:
43 f.write(data)
44
45
46
47 while True:
48 select = input("What are you doing ('l'or'a'or'd')>>")
49 if select == 'l':
50 look()
51 elif select == 'a':
52 add()
53 elif select == 'd':
54 delete()
55 elif select == 'q':
56 break
实现代码
LearnPython_week3的更多相关文章
随机推荐
- Spring Authorization Server的使用
Spring Authorization Server的使用 一.背景 二.前置知识 三.需求 四.核心代码编写 1.引入授权服务器依赖 2.创建授权服务器用户 3.创建授权服务器和客户端 五.测试 ...
- android tcp通讯
Andoird TCP通讯 前言 最近在写一个即时通讯的项目,有一些心得,写出来给大家分享指正一下. 简单描述一下这个项目: 实时查询车辆运行状态的项目,走TCP通迅. 接口采用GZIP压缩. 后台是 ...
- 2021CCPC河南省省赛
大一萌新,第一次打比赛,虽然是线下赛,但送气球的环节还是很赞的! 这里主要是补一下自己的弱项和考试时没有做出来的题目. 1002(链接之后再放,官方还没公开题目...) 先说一下第二题,这个题一看就是 ...
- 2021CCPC网络赛(重赛)题解
自己还是太菜了,五个小时一个题也没磕出来,还是队友牛逼!... Primality Test 先看这个题,可能一上去就被\(\frac{f(x)+f(f(x))}{2}\)向下取整吓住了,但仔细想想, ...
- AtCoder Beginner Contest 220部分题(G,H)题解
刚开始的时候被E题卡住了,不过发现是个数学题后就开始使劲推式子,幸运的是推出来了,之后的F题更是树形DP换根的模板吧,就草草的过了,看了一眼G,随便口胡了一下,赶紧打代码,毕竟时间不多了,最后也没打完 ...
- 『学了就忘』Linux基础 — 16、Linux系统与Windows系统的不同
目录 1.Linux严格区分大小写 2.Linux一切皆文件 3.Linux不靠扩展名区分文件类型 4.Linux中所有的存储设备都必须在挂载之后才能使用 5.Windows下的程序不能直接在Linu ...
- 面试官:能手写实现call、apply、bind吗?
1 call.apply.bind 用法及对比 1.1 Function.prototype 三者都是Function原型上的方法,所有函数都能调用它们 Function.prototype.call ...
- Zabbix 4.4 离线安装 使用mariadb的踩坑,无法停止服务
先分享一个网站,之前就没注意过有这个网站,不知道是啥时候开放的.里面分享了N多zabbix的模板. https://share.zabbix.com/ 报错如下 Unsupported charset ...
- java随手记 面向对象
// 可以把两个类放在同一个文件中,但文件中只能有一个类是公共类,且公共类必须与文件同名,即xxx.java,源代码中的每个类编译成class文件 // java库中的类 // java.util.* ...
- Redis源码分析(skiplist)
源码版本: redis-4.0.1 源码位置: server.h :zskiplistNode和zskiplist的数据结构定义. t_zset.c: 以zsl开头的函数是SkipList相关的操作函 ...