补充:python之路day03

  2019.5.11,补充day03没学完的知识:

    文件操作之文件修改:

 1 # Author:K
 2 
 3 file_path = r"D:\PycharmProjects\python learning\day03\test_file"
 4 file_new_path = r"D:\PycharmProjects\python learning\day03\test__new_file"
 5 
 6 file = open(file_path,'r',encoding = 'utf-8')
 7 file_new = open(file_new_path,'w',encoding = 'utf-8')
 8 
 9 for line in file:
10     if "只要心中藏有春天" in line:
11         line = line.replace("只要心中藏有春天","只要心中藏有理想") # 修改文件,修改字符串后重新写入一个新的文件
12     file_new.write(line)
13 
14 file.close()
15 file_new.close()
16 
17 # 通过传参数修改文件 ----------------为什么这个不行?
18 import sys
19 
20 file = open(file_path,'r',encoding = 'utf-8')
21 file_new = open(file_new_path,'w',encoding = 'utf-8')
22 
23 find_file = sys.argv[1]
24 replace_file = sys.argv[2]
25 
26 for line in file:
27     if find_file in line:
28         line = line.replace(find_file,replace_file)
29     file_new.write(line)
30 
31 file.close()
32 file_new.close()
文件修改

    编码与解码:

      encode() 与 decode():

      encode(encoding = "XXX") 编码成XXX
      decode(encoding = "XXX") 用XXX来解码字节其中函数中的 encoding 可以不写
 1 # Author:K
 2 '''
 3 总结:
 4     encode(encoding = "XXX") 编码成XXX
 5     decode(encoding = "XXX") 用XXX来解码字节
 6     其中函数中的 encoding 可以不写
 7 '''
 8 
 9 
10 import sys
11 print(sys.getdefaultencoding()) #打印默认编码
12 
13 str = "你好" # str是unicode编码,不管系统默认读取这个py文件的编码是什么。
14 
15 str_to_utf8 = str.encode("utf-8")
16 print("utf-8:",str_to_utf8)
17 
18 test = str_to_utf8.decode("utf-8").encode("gbk")
19 print("test:",test)
20 
21 str_to_gb2312 = str.encode("gb2312") #编码成gb2312
22 print("gb2312:",str_to_gb2312)
23 
24 decode_gb2312 = str_to_gb2312.decode("gb2312") #用gb2312来解码(PS:用什么编码用什么解码!)
25 print("str:",decode_gb2312)
26 
27 
28 str_to_utf8 = str.encode() #与上述语句一样,这证明了系统默认是utf-8
29 print("系统默认:",str_to_utf8)
30 
31 str_to_gbk = str.encode("gbk") #编码成gbk
32 print("gbk:",str_to_gbk)
33 
34 gbk_to_str = str_to_gbk.decode("gbk") #gbk编码转成字符串 用gbk来解码字节
35 print("str:",gbk_to_str)
36 
37 gbk_to_utf8 = str_to_gbk.decode("gbk").encode("utf-8") #gbk转成utf-8
38 print("utf-8:",gbk_to_utf8)
编码与解码

   

  函数:

    函数的作用:(1)减少重复代码 (2)保持数据的一致性 (3)可扩展

    函数的返回值:
    (1)什么都不写,返回None
    (2)返回值的个数是一个,则返回这个对象object
    (3)返回值的个数是多个,则返回一个元祖tuple
     作用:想要得到函数的结果

    def func(x,y)
     位置参数调用 func(1,2) 与形参一一对应
     关键字参数调用,func(x = 1,y = 2) 与形参顺序无关
     在调用的时候两种调用方式若混合使用的话关键字参数必须得在位置参数后面,不过一般不会这样使用。

    def func(x,y = 2)
     默认参数,调用时:func(1) 自动会给y赋值2而不会报错
     作用:默认参数非必须传递

    def func(*args)
     print(*args) #得到实参的值
     print(args) #得到元祖
     print(args[0]) --> 打印1
     多个实参传递,用下标形式取出来
       func(1,2,3,4,5,6)

       def func_convert_to_dic(**kwargs):
     # print(**kwargs) 这样写回报错
    print(*kwargs) #取出实参传递的key
    print(*kwargs["name"]) #取出key为“name”的值,每个字符之间以空格隔开
    print(kwargs)
       func_convert_to_dic(name = "zhangsan",age = 10,sex = 'M')

       *args 与 **kwargs 比较:
    *args 是位置参数的传递
     **kwargs 是关键字参数的传递

       局部变量和全局变量:
      局部变量:在函数中定义的变量
      全局变量:在“第一级”写的变两个为全局变量

       递归函数:函数调用自身的函数
      (1)必须要有递归出口(即有结束条件)
      (2)问题规模必须比上一层函数少

 

  1 # Author:K
  2 '''
  3     函数的作用:(1)减少重复代码 (2)保持数据的一致性 (3)可扩展
  4 
  5     函数的返回值:
  6     (1)什么都不写,返回None
  7     (2)返回值的个数是一个,则返回这个对象object
  8     (3)返回值的个数是多个,则返回一个元祖tuple
  9         作用:想要得到函数的结果
 10 
 11     def func(x,y)
 12         位置参数调用 func(1,2)    与形参一一对应
 13         关键字参数调用,func(x = 1,y = 2) 与形参顺序无关
 14         在调用的时候两种调用方式若混合使用的话关键字参数必须得在位置参数后面,不过一般不会这样使用。
 15 
 16     def func(x,y = 2)
 17         默认参数,调用时:func(1) 自动会给y赋值2而不会报错
 18         作用:默认参数非必须传递
 19 
 20     def func(*args)
 21         print(*args) #得到实参的值
 22         print(args) #得到元祖
 23         print(args[0]) --> 打印1
 24         多个实参传递,用下标形式取出来
 25     func(1,2,3,4,5,6)
 26 
 27     def func_convert_to_dic(**kwargs):
 28         # print(**kwargs) 这样写回报错
 29         print(*kwargs) #取出实参传递的key
 30         print(*kwargs["name"]) #取出key为“name”的值,每个字符之间以空格隔开
 31         print(kwargs)
 32     func_convert_to_dic(name = "zhangsan",age = 10,sex = 'M')
 33 
 34     *args 与 **kwargs 比较:
 35         *args 是位置参数的传递
 36         **kwargs 是关键字参数的传递
 37 
 38     局部变量和全局变量:
 39         局部变量:在函数中定义的变量
 40         全局变量:在“第一级”写的变两个为全局变量
 41 
 42     递归函数:函数调用自身的函数
 43         (1)必须要有递归出口(即有结束条件)
 44         (2)问题规模必须比上一层函数少
 45 
 46 
 47 '''
 48 
 49 import time
 50 
 51 def write_demo(content):
 52     file_path = r"D:\PycharmProjects\python learning\day03\test_file"
 53     with open(file_path,'a',encoding='utf-8') as f:
 54         time_format = "%Y-%m-%d %X" #打印时间的格式
 55         f.write("\n{0} {1}".format(time.strftime(time_format),content))
 56 
 57 write_demo("添加的内容".center(20,'-'))
 58 
 59 def return_rst_None():
 60     pass
 61 
 62 def return_rst_one():
 63     return 1
 64 
 65 def return_rst_more():
 66     return 1,"string",["list"],{"key":"value"}
 67 
 68 print(return_rst_None())
 69 print(return_rst_one())
 70 print(return_rst_more())
 71 
 72 def func(x,y):
 73     print(x)
 74     print(y)
 75 
 76 func(1,2) #与形参一一对应
 77 func(y = 2,x = 1) #与形参顺序无关
 78 
 79 def func_more_argument(*args):
 80     print(*args) #得到实参的值
 81     print(args) #得到元祖
 82 
 83 func_more_argument(1,2,3,4,5,6)
 84 
 85 def func_convert_to_dic(**kwargs):
 86     # print(**kwargs) 这样写回报错
 87     print(*kwargs) #取出实参传递的key
 88     print(*kwargs["name"]) #取出key为“name”的值,每个字符之间以空格隔开
 89     print(kwargs)
 90 
 91 func_convert_to_dic(name = "zhangsan",age = 10,sex = 'M')
 92 
 93 # 全局变量 & 全局变量
 94 name = "黄文锲"
 95 age = "23"
 96 def test_argument(name):
 97     # global age # 若需要改全局变量,要在前面加 global 关键字,!!!!!不建议使用!!!!!
 98     age = 24 # 不提前声明 global ,即使在函数改了,在函数外也不会改变这个值
 99     print("before:",name,age)
100     name = "hwq" # 当前函数内的name的作用域就在这个函数中 --> 局部变量
101     print("after:",name,age)
102 
103 test_argument(name)
104 print(name,age)
105 
106 #字符串、数字改了也不发生变化。
107 string = "string"
108 
109 def test_modify1(string):
110     string = "STRING"
111     print(string)
112 
113 test_modify1(string)
114 print(string)
115 
116 #列表,字典,类改了会发生变化
117 names = ["zhangsan","lisi","wangwu"]
118 
119 def test_modify2():
120     print("Before:",names[0])
121     names[0] = "ZHANGSAN"
122     print("After:",names[0])
123 
124 test_modify2()
125 print(names[0])
126 
127 # 函数递归调用
128 def fibonacci(n):
129     if n == 0 or n == 1:
130         return n
131     else:
132         return fibonacci(n-1) + fibonacci(n-2)
133 
134 for i in range(1,10):
135     print(fibonacci(i),end = ' ')
函数用法

 作业:

  需求:

    1、查
输入:www.oldboy.org
获取当前backend下的所有记录

2、新建
输入:
arg = {
'bakend': 'www.oldboy.org',
'record':{
'server': '100.1.7.9',
'weight': 20,
'maxconn': 30
}
}

3、删除
输入:
arg = {
'bakend': 'www.oldboy.org',
'record':{
'server': '100.1.7.9',
'weight': 20,
'maxconn': 30
}
}





 

猜你喜欢

转载自www.cnblogs.com/KisInfinite/p/10847473.html