• 函数初识


    . 文件操作知识回顾

    文件操作的流程:
    1. 打开文件,创建文件句柄
    2. 对文件句柄进行操作
    3. 关闭文件句柄


    r r+ rb r+b
    读取方法:
    read() 全部读取
    read(n) 读取一部分
    r 模式:n代表n个字符
    b 模式:n代表n个字节
    readline() 按行读取
    readlines() 返回列表,列表中的每个元素是文件的每一行
    for 循环


    w w+ wb w+b
    如果没有文件,创建文件写入内容
    如果有文件,清空内容,写入新内容

    追加
    a a+ ab a+b
    如果没有文件,创建文件写入内容
    如果有文件,在文件的最后追加新内容

    b 的模式:
    操作的非文本类的文件

    其他操作方法:
    readable()
    writable()
    seek()
    tell()
    flush()
    truncate()

    文件操作的改:
    都是以新旧文件的操作来改文件
    1. 以读模式打开原文件,产生文件句柄f1
    2. 以写模式打开新文件,产生文件句柄f2
    3. 读取原文件内容,修改成新内容后写入新文件
    4. 删除原文件
    5. 将新文件重命名为原文件名

    . 函数
    
    
     1 # 面向过程编程:
     2 # 1. 代码重复性多
     3 # 2. 代码的可读性差
     4 
     5 l = [1, 2, 3, 4]
     6 count = 0
     7 for i in l:
     8     count += 1
     9 print(count)
    10 
    11 # 函数式编程
    12 
    13 # 函数:
    14 # 一个函数封装一个功能
    15 
    16 def my_len():
    17     count = 0
    18     for i in l1:
    19         count += 1
    20     print(count)
    21 
    22 my_len()
    
    
     1 # 探探
     2 
     3 print("打开探探")
     4 print("附件的人")
     5 print("左滑一下")
     6 print("右滑一下")
     7 print("锁定目标,联系")
     8 print("相约...")
     9 
    10 # 上面重复代码较多,可以整合到一个函数中
    11 
    12 def date():
    13     print("打开探探")
    14     print("附件的人")
    15     print("左滑一下")
    16     print("右滑一下")
    17     print("锁定目标,联系")
    18     print("相约...")
    19 
    20 
    21 date()  # 调用函数,只有这步才能执行上面的函数
    22 
    23 # 要调用几次,就写几个 date()
     1 # return 用法
     2 
     3 def date():
     4     print("打开探探")
     5     print("附件的人")
     6     print("左滑一下")
     7     print("右滑一下")
     8     print("锁定目标,联系")
     9     print("相约...")
    10     return
    11     print("锁定目标,联系")
    12     print("相约...")
    13 
    14 
    15 date()
    16 print(666)
    17 
    18 # 1. 函数中遇到 return 直接结束
    19 # 2. 给函数的执行者(调用者,即 date())返回值
    20 # 单独的return返回None
    21 
    22 def date():
    23     print("打开探探")
    24     print("附件的人")
    25     print("左滑一下")
    26     print("右滑一下")
    27     print("锁定目标,联系")
    28     print("相约...")
    29     return
    30 
    31 date()
    32 
    33 
    34 # return 单个值就返回单个值
    35 def date():
    36     print("打开探探")
    37     print("附件的人")
    38     print("左滑一下")
    39     print("右滑一下")
    40     print("锁定目标,联系")
    41     print("相约...")
    42     return "前凸后翘的美女"
    43 
    44 
    45 ret = date()
    46 print(ret)   # 前凸后翘的美女
    47 
    48 def date():
    49     print("打开探探")
    50     print("附件的人")
    51     print("左滑一下")
    52     print("右滑一下")
    53     print("锁定目标,联系")
    54     print("相约...")
    55     return [1, 2, 3]
    56 
    57 
    58 ret = date()
    59 print(ret)  # [1, 2, 3]
    60 
    61 # return 多个值,返回一个元组
    62 
    63 def date():
    64     print("打开探探")
    65     print("附件的人")
    66     print("左滑一下")
    67     print("右滑一下")
    68     print("锁定目标,联系")
    69     print("相约...")
    70     return "金刚芭比", "洛天依", "天海翼"
    71 
    72 
    73 ret = date()
    74 print(ret)  # ('金刚芭比', '洛天依', '天海翼')
    75 
    76 def date():
    77     print("打开探探")
    78     print("附件的人")
    79     print("左滑一下")
    80     print("右滑一下")
    81     print("锁定目标,联系")
    82     print("相约...")
    83     return "金刚芭比", "洛天依", "天海翼"
    84 
    85 
    86 wangzi, yongge, wang = date()
    87 print(wangzi)  # 金刚芭比
    88 print(yongge)  # 洛天依
    89 print(wang)    # 天海翼
     1 # 函数的参数
     2 
     3 def date(a, b): # 函数的定义:形参
     4     print(a, b)
     5     print("打开探探")
     6     print("附件的人")
     7     print("左滑一下")
     8     print("右滑一下")
     9     print("锁定目标,联系")
    10     print("相约...")
    11 
    12 
    13 x = 2
    14 y = 3
    15 date(x, y)  # 函数的执行者:实参
     1 # 实参
     2 # 位置参数:必须与形参角度的位置从左到右一一对应,否则会报错
     3 
     4 def date(sex, position):
     5     print("打开探探")
     6     print("%s附件的%s" %(position, sex))
     7     print("左滑一下")
     8     print("右滑一下")
     9     print("锁定目标,联系")
    10     print("相约...")
    11 
    12 date("女性", "深圳")
    13 
    14 # 打开探探
    15 # 深圳附件的女性
    16 # 左滑一下
    17 # 右滑一下
    18 # 锁定目标,联系
    19 # 相约...
     1 # 写一个函数,完成一个功能:给函数传入两个数字对象,将大的数字返回给函数的调用者
     2 
     3 def larger_number(a, b):
     4     if a > b:
     5         return a
     6     else:
     7         return b
     8 
     9 s = larger_number(100, 102)
    10 print(s)  # 102
    11 
    12 if a > b:
    13     return a
    14 else:
    15     return b
    16 
    17 # 这种简单的搭配可以用三元运算符
    18 
    19 ret = 666 if 3 > 2 else 777
    20 print(ret)
    21 
    22 # 所以上面的条件判断可以写成
    23 
    24 ret = a if a > b else b
    25 
    26 def larger_number(a, b):
    27     if a > b:
    28         return a
    29     else:
    30         return b
    31 
    32 s = larger_number(100, 102)
    33 print(s)
    34 
    35 # 上面可以简写成:
    36 
    37 def larger_number(a, b):
    38     ret = a if a > b else b
    39     return ret
    40 
    41 
    42 larger_number(100, 101)
    43 
    44 # 还可以简写成
    45 
    46 def larger_number(a, b): return a if a > b else b
    47 
    48 
    49 ret = larger_number(100, 102)
    50 print(ret)
     1 # 关键字参数
     2 # 必须一一对应,可以不按顺序
     3 
     4 def date(sex, position, soft):
     5     print("打开手机")
     6     print("打开%s软件,搜索%s附件的%s" %(soft, position, sex))
     7     print("左滑一下")
     8     print("右滑一下")
     9     print("锁定目标,联系")
    10     print("相约...")
    11 
    12 date(soft="微信", sex="girl", position="深圳南山区")
    13 
    14 # 打开手机
    15 # 打开微信软件,搜索深圳南山区附件的girl
    16 # 左滑一下
    17 # 右滑一下
    18 # 锁定目标,联系
    19 # 相约...
     1 # 混合参数——既有位置参数,又有关键字参数
     2 
     3 def date(meet_place, sex, position, soft):
     4     print("打开手机")
     5     print("打开%s软件,搜索%s附件的%s" % (soft, position, sex))
     6     print("左滑一下")
     7     print("右滑一下")
     8     print("锁定目标,联系")
     9     print("相约%s" % meet_place)
    10 
    11 # 位置参数必须在关键字参数前面
    12 date("酒吧", soft="微信", sex="girl", position="深圳南山区")
    13 
    14 # 打开手机
    15 # 打开微信软件,搜索深圳南山区附件的girl
    16 # 左滑一下
    17 # 右滑一下
    18 # 锁定目标,联系
    19 # 相约酒吧
    实参角度:
    1. 位置参数——从左到右一一对应
    2. 关键字参数——一一对应,可以不按顺序
    3. 混合参数——位置参数一定要在关键字参数前面
     1 # 形参角度:
     2 # 1. 位置参数——与实参角度的位置参数一样,要从左到右一一对应
     3 
     4 def date(sex, position):
     5     print("打开探探")
     6     print("%s附件的%s" %(position, sex))
     7     print("左滑一下")
     8     print("右滑一下")
     9     print("锁定目标,联系")
    10     print("相约...")
    11 
    12 
    13 date("女性", "深圳")
     1 # 2. 默认参数——给形参设置默认值,通常是常用的数值,可改可不改
     2 # 注意:默认参数一定要在位置参数后面
     3 
     4 # 示例一
     5 def date(meet_place, position, soft, sex="girl"):
     6     print("打开手机")
     7     print("打开%s软件,搜索%s附件的%s" % (soft, position, sex))
     8     print("左滑一下")
     9     print("右滑一下")
    10     print("锁定目标,联系")
    11     print("相约%s" % meet_place)
    12 
    13 
    14 date("酒吧", soft="微信", position="深圳南山区")
    15 
    16 # 示例二
    17 def date(meet_place, position, soft, sex="girl"):
    18     print("打开手机")
    19     print("打开%s软件,搜索%s附件的%s" % (soft, position, sex))
    20     print("左滑一下")
    21     print("右滑一下")
    22     print("锁定目标,联系")
    23     print("相约%s" % meet_place)
    24 
    25 
    26 date("酒吧", soft="微信", position="深圳南山区", sex="lady_boy")  # 注意这里默认参数可以改变
    27 
    28 # 打开手机
    29 # 打开微信软件,搜索深圳南山区附件的lady_boy
    30 # 左滑一下
    31 # 右滑一下
    32 # 锁定目标,联系
    33 # 相约酒吧
     1 # 默认参数的陷阱
     2 # 默认参数指向的是一个容器型数据类型,那么这个数据永远是同一个(内存地址)
     3 
     4 def func1(a, l1=[]):
     5      l1.append(a)
     6      return l1
     7 
     8 print(func1(666))  # [666]
     9 print(func1(22))   # [666, 22]
    10 print(func1(33, []))  # [33]
    11 # 第三次主动传入了一个空列表
    12 
    13 def extendList(val, list=[]):
    14     list.append(val)
    15     return list
    16 
    17 list1 = extendList(10)
    18 list2 = extendList(123, [])
    19 list3 = extendList('a')
    20 
    21 print('list1=%s' % list1)
    22 print('list2=%s' % list2)
    23 print('list3=%s' % list3)
    24 
    25 # list1=[10, 'a']
    26 # list2=[123]
    27 # list3=[10, 'a']
    28 # 这里注意先是全部执行了 print 前面的内容再打印结果的,注意与下面的区别
    29 
    30 def extendList(val, list=[]):
    31     list.append(val)
    32     return list
    33 
    34 list1 = extendList(10)
    35 print('list1=%s' % list1)
    36 list2 = extendList(123, [])
    37 print('list2=%s' % list2)
    38 list3 = extendList('a')
    39 print('list3=%s' % list3)
    40 
    41 # list1=[10]       # 有了print阻断了三者都运行的顺序,这里只添加了10
    42 # list2=[123]      # 说明新传进一个空列表在内存中指向另一个地址
    43 # list3=[10, 'a']  # 说明10和"a"指向内存中同一个地址
     1 # 万能参数
     2 # 两个形参参数,接收所有的位置参数和关键字参数
     3 # 又称动态参数、不定长传参,就是你需要传给函数的参数很多,不定个数时,就用*args,**kwargs接收
     4 # args是元祖形式,接收除去键值对以外的所有参数,kwargs接收的只是键值对的参数,并保存在字典中。
     5 
     6 def date(*args, **kwargs):
     7     print(args)
     8     print(kwargs)
     9 
    10 date("深圳南山区", "18-30", "23", 13, position="深圳南山区", sex="lady_boy")
    11 
    12 # ('深圳南山区', '18-30', '23', 13)
    13 # {'position': '深圳南山区', 'sex': 'lady_boy'}
    形参角度:
    # 1. 位置参数——从左到右,一一对应
    # 2. 默认参数,放在位置参数后面
    # 3. 万能参数:接受实参角度所有的位置参数,关键字参数。

  • 相关阅读:
    闪回flashback
    Oracle数据文件在open状态被删除的恢复记录
    从浅到深掌握Oracle的锁
    Oracle 11g 11201_RHEL5.5_RAC_VBOX 详细搭建步骤
    AWR Report 关键参数详细分析
    16、Xtrabackup备份与恢复
    17、percona-toolkit
    插入排序
    选择排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/shawnhuang/p/10190569.html
Copyright © 2020-2023  润新知