zoukankan      html  css  js  c++  java
  • 第1月3周3天

    1. 函数的初识
    2. 函数的返回值
    3. 函数的参数

    readLines每个元素都是文件每一行+

    扩展性

    老师昨天讲了两道题,都涉及到了扩展性。列表套字典转变成字典套字典,使 内容方便查找。
    其次就是用列表下标的查找元素的方法直接作为新元素的值。这样就限制了扩展性。

    !!!error 文件w模式

    是每次w模式源打开文件产生文件句柄才会清空,如果打开一次并且写多次不会每次写都清空,直到关闭文件。
    !!!

    
    list3 = [
        {"name": "alex", "hobby": "抽烟"},
        {"name": "alex", "hobby": "喝酒"},
        {"name": "alex", "hobby": "烫头"},
        {"name": "alex", "hobby": "Massage"},
        {"name": "wusir", "hobby": "喊麦"},
        {"name": "wusir", "hobby": "街舞"},
    ]
    list4 = [
        {"name": "alex", "hobby_list": ["抽烟", "喝酒", "烫头", "Massage"]},
        {"name": "wusir", "hobby_list": ["喊麦", "街舞"]},
    ]
    将list3 这种数据类型转化成list4类型,你写的代码必须支持可拓展,
    比如list3 数据在加一个这样的字典{"name": "wusir", "hobby": "溜达"},	你的list4{"name": "wusir", "hobby_list": ["喊麦", "街舞", "溜达"],
    或者list3增加一个字典{"name": "太白", "hobby": "开车"},
    你的list4{"name": "太白", "hobby_list": ["开车"],无论按照要求加多少数据,你的代码都可以转化.如果不支持拓展,则4分,支持拓展则8分.
    
    ll = []
    l_list = []
    with open("a2",encoding="utf-8",mode="r") as f1:
      for line in f1:
        line_list = line.strip().split()
        dic = {}
        for i in line_list:
            a,b = i.strip().split(":")
            dic.setfault(a,b)
        ll.append(dic)
    

    拓展型

    "拓展列"
    name_list = ["name","price","amount","year","备注"]
    l1 = []
    with open("a",encoding="utf-8") as f1:
    	for line in f1:
    		if line.strip():
    			line_list = line.strip().split()
    			dic = {}
    			for index in range(len(name_list)):
    				dic[name_list[index]] = line_list[index]
    			l1.append(dic)
    print(l1)
    
    "去重复项,并且组合不同项"
    dic = {}
    for  i in list3:
      if i["name"] in dic: # 直接获取键会报错所以要用in
          if not i["hobby"] in dic[i["name"]]["hobby_list"]:
            dic[i["name"]]["hobby_list"].append(i["hobby"])
      else:
        dic.setdefault(i["name"],{"name":i["name"],"hobby_list":[i["hobby"],]})
    print(list(dic.values()))
    第二种方法:
      ret = []
    for i in user_list:
        for j in ret:
            if i["name"] == j["name"]:
                if i["hobby"] not in j["hobby_list"]:
                    j["hobby_list"].append(i["hobby"])
                break
        else:
            ret.append({"name": i["name"], "hobby_list": [i["hobby"], ]})
    print(ret)
    第三种方法:
      d = {}
    for i in user_list:
        if i["name"] in d:
            if i["hobby"] not in d[i["name"]]:
                d[i["name"]].append(i["hobby"])
        else:
            d.setdefault(i["name"],[i["hobby"],])
    u_list =["name","hobby_list"]
    list4 = []
    for i in d:
        dict = {"name":i,"hobby_list":d[i]}
        list4.append(dict)
    print(list4)
      
    

    函数

    面向过程式编程 linux源码,只针对现有的需求。
    如果需求与需求之间有相同性 面向过程需要重新写。

    函数优点:
    减少代码重复率
    增强代码的阅读性

    函数是什么?
    封装功能

    def func1():
      a = b
      b = 2
      c = a + b
      d = 'alex'
      e = [1,2,3]
      return c,d,e
    ret = func1()
    print(ret,type(ret))
    
    def len():
      s = 'sfsfslfjsljsfjl'
      
      count = 0
      for i  in s :
        count += 1
    
    

    函数的传参:

    实参

    形参

    位置参数

    三元运算只针对简单的 if else 结构

    关键字传参 可以不按照顺序,但必须一一对应

    def func1(x,y):
      return x+y
    print(func1(y=100,x=99))
    

    混合传参 关键字参数一定要在位置参数后,默认参数归于关键字参数。变长位置参数放在,位置参数最后。变长关键字参数放在关键字参数最后。

    def func1(a,b,n,x,y)
    

    形参角度

    位置参数 :按照顺序一一对应
    默认参数 :给其传值,将原默认参数覆盖掉,不传值。
    有些值不经常变,经常使用的值就使用。

    def namelist(name,sex='男'):
      with open('namelist',encoding='utf-8',mode='a') as f1:
        f1.write('{}|{}
    '.format(name,ssex))
    while 1:
      name,sex = input('').strip().replace(',',',').split(',')
      if name.upper() == 'Q':break
      namelist(name,sex if sex.strip() else None)
    

    默认参数陷阱

    默认参数为可变的数据类型,它始终使用一个。

  • 相关阅读:
    数据类型
    32个关键字
    标识符
    Xcode常用快捷键
    Linux中级之keepalived配置
    linux中级之keepalived概念
    Linux中级之lvs三个模式的图像补充(nat,dr,tun)
    linux中级之防火墙的数据传输过程
    Linux中级之netfilter/iptables应用及补充
    linux中级之lvs配置(命令)
  • 原文地址:https://www.cnblogs.com/yonghuierming/p/9507673.html
Copyright © 2011-2022 走看看