zoukankan      html  css  js  c++  java
  • 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. 默认值参数和位置参数混合使用。顺序:先写位置参数,在写默认值参数。
  • 相关阅读:
    linux 解压tgz 文件指令
    shell 脚本没有执行权限 报错 bash: ./myshell.sh: Permission denied
    linux 启动solr 报错 Your Max Processes Limit is currently 31202. It should be set to 65000 to avoid operational disruption.
    远程查询批量导入数据
    修改 MZTreeView 赋权节点父节点选中子节点自动选中的问题
    关于乱码的问题解决记录
    我的网站优化之路
    对设计及重构的一点反思
    我的五年岁月
    奔三的路上
  • 原文地址:https://www.cnblogs.com/oito/p/11228230.html
Copyright © 2011-2022 走看看