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中的函数返回值类型可以是任意你想要的值,包括数值,字符串,列表,字典等,因此在写函数的时候,要注意灵活使用。

  • 相关阅读:
    hadoop中namenode发生故障的处理方法
    开启虚拟机所报的错误:VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary fil
    Hbase的安装与部署(集群版)
    分别用反射、编程接口的方式创建DataFrame
    用Mapreduce求共同好友
    SparkSteaming中直连与receiver两种方式的区别
    privot函数使用
    Ajax无刷新显示
    使用ScriptManager服务器控件前后台数据交互
    数据库知识
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/9574079.html
Copyright © 2011-2022 走看看