• python笔记007-函数


    昨日简要:

    1.文件操作:
    1.1获得句柄:

         f = open(‘one.txt’,mode=’’,encoding=’utf-8’)

         f = open(‘../’) à返回上一层

         f = open(‘D: est2one.txt’,mode=’’,encoding=’utf-8’)

    1.2 mode(模式)

         mode = ‘r’’w’’r+’’w+’’a+’’rb’’wb’’ab’’r+b’’w+b’’a+b’

         (最常用的是 ‘r+’,)

         如果用’b’open,open句柄不要写encoding,其余地方记得带encoding。

    1.3 光标 seek()

    seek(0,0) ß à seek(0) 光标在开头

    seek(0,2) 光标在结尾

         光标 tell() à报告当前光标位置

          truncate([size])  à截断文件,如果有可选参数size,则表示截断文件为 size 个字符。如果没有指定size ,则从当前位置起截断,截断之后size后面的所有字符都被删除。

    1.4 strip()

    去掉空格、换行( )

    1.5 readline

    readline à 内存容易爆炸

    解决内存问题 :循环取 for line in f:

    1.6 with

    文件操作句柄

    import os
    #方法一
    def test10():
        #打开文件,创建新文件
        with open("day008/day_008_1.txt",mode='r',encoding='utf-8') as f1,
            open("day008/day_008_1_new.txt",mode='w',encoding='utf-8') as f2:
    
            content = f1.read()
            new_content = content.replace('飞将','李广') # 替换内容
            f2.write(new_content)   # 写到 f2 中
        os.remove('day008/day_008_1.txt') #删除原文件
        os.rename('day008/day_008_1_new.txt','一生未封侯.txt') #
    
    # 方法二
    def test11():
        f1 = open("day008/day_008_1.txt", mode='r', encoding='utf-8')
        f2 = open("day008/day_008_1_new.txt", mode='w', encoding='utf-8')
        for line in f1: #一行一行取
            new_line = line.replace('李广','飞将')
            f2.write(new_line)
        os.remove('day008/day_008_1.txt')
        os.rename('day008/day_008_1_new','李广特点守')
        f2.flush()

    今日内容:

    1.   冒泡排序:前后相互比较大小

     1 # 冒泡排序
     2 li = [12,23,3,6,5,34,16,37,2]
     3 li1 = len(li)
     4 while li1>0:
     5     for i in range(li1 - 1):
     6         if li[i] > li[i + 1]:
     7             l = li[i]
     8             li[i] = li[i+1]
     9             li[i+1] = l
    10             # li[i],li[i+1]=li[i+1],li[i]
    11     li1 -=1
    12 print(li)
    详解参考菜鸟教程:https://www.runoob.com/python3/python-bubble-sort.html

    2.   函数:

    2.1  函数的概念:对代码块和功能的封装、定义。先定义--> 调用;“函数”就像一个程序内的小程序

    2.2  函数的定义:

    def 函数名() :

            代码块 -- 函数体

               函数的调用:

                    直接写函数名

    函数的一个主要目的就是将需要多车执行的代码放在一起。

    •  return 返回值:

               返回一个值

               返回多个值,返回的是一个(元组)。

    • 遇到return时,函数结束。函数后面的代码块不再执行。
    • return这句话如果不写(或没有内容),默认返回None

    2.3 函数的参数:

    • ·形参:写在函数声明处位置的变量,形式上是一个完成整的参数,表示这个函数需要‘它/它们’。
    • ·实参:写在函数调用时,形参相应位置的值。实际执行的时候给函数传递具体内容。表示给函数‘它/它们’。

    参数分类:

    • 位置参数,在传参过程就中把‘a’‘b’按照声明处形参的位置顺序依次给他们赋值。
    • 关键字参数:不需要记忆每个参数的位置,只要记住参数的名字就好了。。
    • 混合参数:位置参数和关键字参数的混合使用

    小结:

            位置参数(按照顺序,依次赋值)

            关键字参数(只需要记住关键字,实参中给关键字赋值)

            混合参数(位置参数必须在关键字参数的前面。)

            ·默认值参数:在函数声明时,直接给出函数参数的默认值。在调用的时候默认值输出这个值,也可以在实参上修改。

    传参:将实际参数传给形式参数的过程。

    当args与位置参数默认参数混用的情况下:(注意三者的顺序)

    示例一、(三者顺序是:位置参数、默认参数、*args)

    1 def foo(x,y=1,*args):
    2    pass
    3 foo(1,2,3,4,5)#其中的x为1,y=1的值被2替换,3,4,5都给args,即args=(3,4,5)

    示例二、(三者顺序是:位置参数、*args、默认参数)

    1 def foo(x,*args,y=1):
    2     pass
    3 foo(1,2,3,4,5)#其中的x为1,2,3,4,5都给args,即args=(2,3,4,5),y始终为1

    **kwargs: (表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现)。关于**kwargs与位置参数、*args、默认参数混着用的问题(注意顺序)

    位置参数、*args、**kwargs三者的顺序必须是位置参数、*args、**kwargs,不然就会报错;

    实例:

    1 def foo(x,*args,**kwargs):
    2     pass
    3 foo(1,2,3,4,y=5,a=6,b=7)
    4 #其中的 x 为1 , 2、3、4都给args,即args=(2,3,4),y=5,a=6,b=7以字典形式传给kwargs 即kwargs= {'y':5,'a':6,'b':7}

    3.   None值

         在Python中有一个值称为 None,它表示没有值。None 是 NoneType(空字节)数据类型的唯一值(其他编程语言可能称这个值为null,nil

    或undefined)。就像布尔值 True 和 False 一样,None 必须大写首字母。

         如果你希望变量中存储的东西不会与一个真正的值混淆,这个没有值的值就可能有用。有一个使用None的地方就是print() 的返回值。print()函数在屏幕上显示文本,但它不需要返回任何值,这和len() 或 input() 不同。但既然所有函数调用都需要求值为一个返回值,那么print() 就返回None.

    1 >>>span = print(‘hello!’)
    2 hello!
    3 >>>None = span
    4 True

         在幕后,对于所有没有 return 语句的函数定义,Python都会在末尾加上return None。这类似于 while 或 for 循环隐式地以 continue语句结尾。而且,如果使用不带值的return 语句(也就是只有return关键字本身),那么就返回None。

    4.   总结

    站在实参的角度:

    1. 位置参数
    2. 关键字参数
    3. 混合参数 (关键字参数放在位置参数后面)

    站在形参的角度:

      1. 位置参数
      2. 默认值参数
      3. 默认值参数和位置参数混合使用。顺序:先写位置参数,在写默认值参数。
  • 相关阅读:
    模块系统
    控制结构
    基本语法
    Go-技篇第一 技巧杂烩
    微服务的4个设计原则和19个解决方案
    kcp-go源码解析
    windows.go
    服务端跨域处理 Cors
    Snowflake 全局唯一Id 生成
    面试?或许你应该这样
  • 原文地址:https://www.cnblogs.com/oito/p/11228230.html
Copyright © 2020-2023  润新知