zoukankan      html  css  js  c++  java
  • day10上节内容补充和初始函数

    1.上节内容补充

       文件的删除和修改:

    #文件的删除和修改
    #文件中全部都要修改
    # with open('歌词',encoding='utf-8') as f1,open('歌词.bak','w',encoding='utf-8') as f2:
    #     for line in f1:
    #         new_line = line.replace('呢','呀')
    #         f2.write(new_line)
    # import os
    # os.remove('歌词')
    # os.rename('歌词.bak','歌词')
    #第二种  某一行要修改  比如第一个出现呢的行
    with open('歌词',encoding='utf-8') as f1,open('歌词.bak','w',encoding='utf-8') as f2:
        flag = True # count = 0
        for line in f1:
            if '' in line and flag: # if '呀' in line and coun==0
                new_line = line.replace('','')
                f2.write(new_line)
                flag = False                   # count+=1
            else:
                f2.write(line)
    import os                             # 文件的删除接触windows系统的删除 用到了模块
    os.remove('歌词')
    os.rename('歌词.bak','歌词')

          文件操作with 体的使用可避免忘记f.close

    with open('a.txt','w') as f:
        pass
     
    with open('a.txt','r') as read_f,open('b.txt','w') as write_f:
        data=read_f.read()
        write_f.write(data)

    二、初始函数

     为什么要使用函数

    #1、代码的组织结构不清晰,可读性差 #2、遇到重复的功能只能重复编写实现代码,代码冗余 #3、功能需要扩展时,需要找出所有实现该功能的地方修改之,无法统一管理且维护难度极大 
    #什么是函数:

    很明显内置函数所能提供的功能是有限的,这就需要我们自己根据需求,事先定制好我们自己的函数来实现某种功能,以后,在遇到应用场景时,调用自定义的函数即可。
    #函数的格式:

    def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。

       def 是固定的,不能变,必须是连续的def三个字母,不能分开。。。它们要相亲相爱的在一起。

       空格 为了将def关键字和函数名分开,必须空(四声),当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。

       函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能

       括号:是必须加的,先别问为啥要有括号,总之加上括号就对了!

    注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。

    调用:就是 函数名() 要记得加上括号,好么好么好么

    例如:

    def hell():
    
        print('hell,word!)
    hell()  #hell,word!

     函数的返回值

    #返回值:
    # 没有返回值:
        # 不写return  == return None
        # 只写一个return  == return None
        #  return的作用:1.返回一个值 2.终止一个函数的继续
    
    # 返回一个值: 可以返回任意的数据类型。返回什么 就接受什么
    
    # 返回多个值:
    #   用一个变量接收返回值,接收到的是一个元组
    #   返回值有多个变量接收,那么返回值的个数应该和接收变量的个数完全一致
    def f1():
        return 1,2,3,4
    l = f1()
    print(l)  # (1, 2, 3, 4)
    a,b,c,d = f1()
    print(a)  #1
    print(b)    #2
    print(c)    #3
    print(d)    #4

    参数  形参》》位置参数,关键字参数(默认函数)      》》实参  按位置传,按关键字传

    # 参数
    # 形参和实参
    # 传参数可以传任意的数据类型,并且传什么,接受什么
    # 站在传参数的角度上看问题:一共有两种传参的方式
        # 第一种:按照位置传参数
        # 第二种:按照关键字传参数
    
    # def f(para):
    #     print(para)
    #
    # f(para = 1)
    
    
    #传多个参数:多个参数分别可以使用任意数据类型
    def f2(arg1,arg2,arg3):   #站在接受、形参的角度上:位置参数
        print(arg1)
        print(arg2,arg3)
    
    #f2('abc',arg1 = [1,23])  #报错  已经传过了
    #f2('abc',arg2 = [1,23])   # 报错,缺少一个参数
    f2(arg3 = 1,arg2 = 2,arg1 = 3)#如果第一个实参是关键字那么后边的参数必须都是关键字
    #按照关键字传参数和按照位置传参数是可以混用的
    #但是,首先传按位置的,再传按关键字的
    #按照位置传完该接受的参数只能接受一个值,不接受或者重复接收都不想
    #形参
    #位置参数
    #数量必须与实参数量一致  ==> 必须传的参数
    
    def classmate(name,sex=''):
       print('姓名:%s,性别%s'%(name,sex))
    
    classmate('尤悦')
    classmate('曹超')
    classmate('张建超')
    classmate('晓梅','')
    
    #默认参数:
    #默认参数 是可以不传的参数
    #在不传参数的情况下可以使用默认的值
    #如果传了,就会使用传的值
    def foo(x, y, *args, a=1, b, **kwargs):
        print(x, y)
        print(args)
        print(a)
        print(b)
        print(kwargs)
    foo(1, 2, 3, 4, 5, b=3, c=4, d=5)
    # 结果:
    # 1
    # 2
    # (3, 4, 5)
    # 1
    # 3
    # {'c': 4, 'd': 5}

    默认参数的魔性用法 (默认参数一般都要选择不变的值)

    # #魔性的用法:默认参数尽量避免使用可变数据类型
    # def func(l = []):
    #     l.append(1)
    #     print(l)
    # func()           #[1]
    # func()           #[1,1]
    lst = []
    def func(l = lst):
        l.append(1)
        print(l)
    func([])  #[1]
    func([])    #[1]   用[]传参,就会重新赋值
    #我们可以用None这个不变对象来实现:
    def add_end(L=None):
        if L is None:
            L = []
        L.append('END')
        return L
  • 相关阅读:
    PageHelper 空指针异常
    ajax提交因参数超长导致接收参数为空问题解决
    Vue入门:Vue项目创建及启动
    Vue入门:Vue环境安装
    程序部署到服务器服务无法启动问题
    sqlServer区分大小写查询
    按下回车默认提交form表单问题
    MyEclipse常用快捷键
    基于JAX-WS的webService开发实例
    ie8下new Date()指定时间
  • 原文地址:https://www.cnblogs.com/zjchao/p/7764172.html
Copyright © 2011-2022 走看看