zoukankan      html  css  js  c++  java
  • Python学习第十八篇——低耦合函数设计思想

     1 import json
     2  2 def greet_user(filename):
     3  3     try:
     4  4         with open(filename) as f_obj:
     5  5             username = json.load(f_obj)
     6  6     except FileNotFoundError:
     7  7         username = input("what is your name?")
     8  8         with open(filename,'w') as f_obj:
     9  9             json.dump(username,f_obj)
    10 10             print("we'll remember you when you come back, "+username+"!")
    11 11     else:
    12 12         print("hello,"+username+".;")
    13 13     
    14 14 greet_user("username.json")

    这段代码1描述了这样一个功能,打开“username.json”文件夹,该文件夹中存储了用户姓名,如果不存在该文件夹,可以创建该文件夹,并且这里创建了一个函数来描述这件事情:

    该代码段实际上完成了两个功能:1 读取"username.json"文件夹。2 创建“username.json”文件。

        实际上,在代码设计的时候,我们通常应该具有这样的思想:将我们要做的工作,划分为具体的代码函数块,使得函数看起来更加简洁,扩展性也越强,在编写程序的时候,我们应该具备这样的意识。

    下面,将上述的的代码拆成两部分功能,代码2如下:

    
    

     1 import json

    
    

     2 def get_stored_username():

    
    

     3     filename = "username.json"

    
    

     4     try:

    
    

     5         with open(filename) as f_obj:

    
    

     6             username = json.load(f_obj)

    
    

     7     except FileNotFoundError:

    
    

     8         return None

    
    

     9     else:

    
    

    10         return username

    
    

    11        

    
    

    12 def greet_user():

    
    

    13     username = get_stored_username()

    
    

    14     if username:

    
    

    15         print("hello,"+username+".")

    
    

    16     else:

    
    

    17         username = input("what is your name?")

    
    

    18         filename = "username.json"

    
    

    19         with open(filename,"w") as f_obj:

    
    

    20             json.dump(username,f_obj)

    
    

    21             print("we'll remember you when you come back, "+username+"!")

    
    

    22 greet_user()

    
    

    上述代码完成了函数1的功能。但是函数的耦合程度降低了,因此,写代码的时候,需要注意自己的代码风格,尽量养成低耦合代码的习惯。

    在此,总结一下上述代码中的一些知识点:

    1 json模块非常好用,首先明确一个重要的概念:json是一种数据交换格式,即本质是数据格式的转换, 这种格式方便我们信息。

    2 json.dump()用于将Python对象编码成json字符串

    3 json.load()将json格式转化成python对象

    将上述2抽象一下,变成我们将我们Python中的比如字符串,整型数,字典,列表,这些存储在一个文件在.json的文件类型中

    将3抽象一下,变成,将.json类型的文件加载成字符串,整型数等等。

    如果不考虑数据的本质,我们可以认为,这就是简单的写文件和读文件的操作

    4 代码2中的第八的return None,None是一个关键字(姑且这么叫),我们再看代码2中第十四行代码 if username,可以发现,可以感觉username,None来判断逻辑值,实际上:

     python 中,None,空列表[],空字典{},空元组(),0都一系列代码空和无的对象都会被转化成Flase,其他表示1,真,有的对象被转化成True

    5 代码2中的第10行代码,表示Python中的函数返回值类型可以是任意你想要的值,包括数值,字符串,列表,字典等,因此在写函数的时候,要注意灵活使用。

  • 相关阅读:
    从编程到入侵
    编程实现盗2005 Beta2版QQ
    Justin Frankel:Winamp的反斗奇星
    用安静的热情征服联合国
    我和试用期员工之间的故事
    Sogou输入法之父给我们的启示
    《ATL开发指南》的一个值得商榷的地方
    厦门PX项目迁址:意义有限的进步
    探析项目主导型的IT业的人员需求变化及其应对办法
    今天,影响了一位试用期员工的去留
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/9574079.html
Copyright © 2011-2022 走看看