py3 基础day3(continue1)

文件的替换:
 
 
f = open("yesterday2","r",encoding="utf_8")
f_new = open("yesterday2.bak","w",encoding="utf-8")

#find_str = sys.argv[1]
#replace_str = sys.argv[2]

for line in f:
    if "为何她远去" in line:
        line = line.replace("为何她远去","为何她离我远去")
    f_new.write(line)

f.close()
f_new.close()
with语句
with open("yesterday2","r",encoding="utf-8") as f:
    for line in f:
        print(line)
自动关闭文件

文件操作

with open("yesterday2","r",encoding="utf-8") as f,\
        open("yesterday2","r",encoding="utf-8") as f2:
    for line in f:
        print(line)

6字符编码与转码

Unicode   代码转化的中间站

s= "你好"

s_gbk = s.encode("gbk")
print(s_gbk)
print(s.encode())

gbk_to_utf8 = s_gbk.decode("gbk").encode("utf-8")
print("utf",gbk_to_utf8)

7函数与函数式编程

1面向对象:-----类,class

2面向过程:-----过程,def

3函数式编程:-----函数,def

函数:是逻辑结构化和过程化的一种编程方法。

#函数
def func1():
    "'testing'"
    print('in the func1')
    return 0
#过程
def func2():
    '''testing'''
    print('in the func2')

x=func1()
y=func2()

print('from func1 return is %s'%x)
print('from func2 return is %s'%y)

4函数定义

import time
def logger():
    time_format = '%Y-%m-%d %X'
    time_current = time.strftime(time_format)
    with open('a.text', 'a+') as f:
        f.write('%s end action\n' %time_current)

def test1():
    print('in the text1')
    logger()
def test2():
    print('in the text2')
    logger()
def test3():
    print('in the text3')
    logger()
5函数返回值

test1()
test2()
test3()
def test1():
    print('in the test1')
def test2():
    print('in the test1')
    return 0
def test3():
    print('in the test1')
    return 1,'hello',['zhang','wu'],{'name':'zhang'}
x = test1()
y = test2()
z = test3()
print(x)
print(y)
print(z)
 
 

返回值0,返回none,返回值tuple。

6函数调用

形参和实参

def test(x,y):
    print(x)
    print(y)

test(y=2,x=1)#与形参顺序无关
test(1,2)#与形参一一对应
形参(x,y)实参(1,2)(一一对应关系)

def test(x,y,z):
    print(x)
    print(y)
    print(z)

#test(y=2,x=1)#与形参顺序无关,关键字调用
#test(1,2)#与形参一一对应,位置参数
test(6,z=4,y=2)#位置参数一定在关键字参数前面
默认参数

def test(x,y=2):
    print(x)
    print(y)

test(1,3)
#默认参数特点,调用参数的时候,默认参数非必须传递

#用途:1.默认安装值 2.

参数组

def test(*args):
    print(*args)

test(1,2,34,4,6)
test(*[1,2,3,4,5])#args= tupple([1,2,3,4,5])


def test1(x,*args):
    print(x)
    print(args)

test1(1,2,3,4,5,6)

#**kwargs:N个关键字参数,转换成字典的方式
def test2(**kwargs):
    print(kwargs)
test2(name='zhang',age = 8,sex = 'N')
  test2(**{ 'name' : 'zhang' , 'age' : 8 })

字典
 
  

def test2(**kwargs):
    print(['name'])
    print(['age'])
    print(['sex'])

test2(name='zhang',age = 8,sex = 'N')
 
  
def test3(name,**Kwargs):
    print(name)
    print(Kwargs)
test3('zhang',age = 18,sex = 'm')
方式3
 
  
def test4(name,age=18,**Kwargs):
    print(name)
    print(age)
    print(Kwargs)
test4('zhang',sex = 'm',hobby='nu',age=7)

方式4
#args接受n个未知参数,装换成字典的方式
def test4(name,age=18,*args,**Kwargs):
    print(name)
    print(age)
    print(args)
    print(Kwargs)
test4('zhang',sex = 'm',hobby='nu',age=7)
局部变量(只在函数内部起作用)
def change_name(name):
    print("before change",name)
    name = "zhang" #这个函数就是这个变量的作用域
    print("after change",name)
name = "ZHang"
change_name(name)

print(name)

全局变量

school = "zhang.edu"#全局变量
def change_name(name):
    school = "TYU"
    print("before change",name,school)

    name = "zhang" #这个函数就是这个变量的作用域,只在函数中生效
    print("after change",name)
print(school)
name = "ZHang"
change_name(name)
print(name)
 
 
改变全局变量不采用(不能再函数里面改全局变量)字符串,变量 
def change_name():
    global name
    name = "zhang"
change_name()
print(name)
列表,字典,集合,类这些,可以在局部该全局
 
 
school = "zhang.edu"#全局变量
names = ["zhang","guo","qi"]
def change_name():
       names[0] = "zhang88"
       print("inside func",names)

change_name()
print(names)
 
 
7递归
1必须有一个明确的结束条件
def calc(n):#不允许
    print(n)
    return calc(n+1)
calc(0)

2每次进入更深一层递归时,问题规模相比上次递归应有所减少;

3递归效率不高,递归层次过多,导致栈溢出;

def calc(n):#简单的递归
    print(n)
    if int(n/2) >0:
        return calc(int(n/2))
    print("->",n)

calc(10)
8函数式编程

1.函数编程就是一种抽象成度很高的编程范式,编写的函数没有变量;(一输入对应一输出);

var result = subtract(multiply(add(1,2),3),4));

9高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接受另一个函数作为参数,这种函数就称之为高阶函数。

def add(a,b,f):
    return f(a)+f(b)

res = add(3,-6,abs)
print(res)

 
 
 
 
 
 
 
 
 
 


猜你喜欢

转载自blog.csdn.net/qq_37951246/article/details/80395208
今日推荐