全局变量与类似配置文件的模块文件

# -*- coding: cp936 -*-
#python 27
#xiaodeng
#全局变量
#重点问题:
1)函数调用的先后顺序导致结果不同
2)使用类似于配置文件的模块文件控制全局变量和控制变量的修改等操作
    在文件之间进行通信的最好办法是通过调用函数,传递参数,然后得到返回值
    虽然一定程度上,会增加代码量,但是可读性和维护性上会变得非常友好
    当人们在阅读第一个文件时,就会看到这个函数,就知道这是一个接口(接入点),并知道将改变变量x的值
    当然,我们依然还是要最小化的修改文件之间的变量,尽可能的保持变量的稳定,不随便修改变量的值

#案例
x=100
def func1():
    global x
    x=88
    print x

def func2():
    global x
    x=77
    print x

#调用顺序不同其结果不同
#x的值取决于函数的调用先后顺序,因为这2个函数是耦合在一起的
print x
func1()
func2()
print x

#结论:
#全局变量使得程序更难以理解和使用,所以尽可能的控制使用全局变量
    eg:
    #test.py
    name=‘xiaodeng‘

    import test
    print test.name

#一些程序情况下,会委任一个单一的模块文件去定义所需要使用到的所有全局变量--->变量名封装思想
#但是这里又会出现一个问题,导致文件之间的依赖性增强,可以考虑在源码中添加备注。
#目前最佳办法:
    eg:
    #fisrt.py
    x=99
    def setX(new):
        global x
        x=new

    #test.py
    import fisrt
    fisrt.setX(88)
    print x
    #案例说明:
    在文件之间进行通信的最好办法是通过调用函数,传递参数,然后得到返回值
    虽然一定程度上,会增加代码量,但是可读性和维护性上会变得非常友好
    当人们在阅读第一个文件时,就会看到这个函数,就知道这是一个接口(接入点),并知道将改变变量x的值
    当然,我们依然还是要最小化的修改文件之间的变量,尽可能的保持变量的稳定,不随便修改变量的值
时间: 2024-10-05 04:45:14

全局变量与类似配置文件的模块文件的相关文章

Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议)

Ganymed SSH2 模拟类似FileZilla远程传输文件(基于SCP协议) 为了传输文件或者目录,我们使用 Ganymed SSH2中的SCPClient类,这个类实现了scp命令功能. 下面的代码包含了传输单个文件和传输目录的功能: package com.doctor.ganymed_ssh2; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io

使用import和exec运行模块文件的异同

使用import和exec运行模块文件的异同 实例代码 #script1.py import sys print(sys.platform) x = 'span' print(x*8) 在cmd中 >>> import script1 win32 spanspanspanspanspanspanspanspan >>> exec(open('script1.py').read()) win32 spanspanspanspanspanspanspanspan 看上去毫无

python解析配置文件---configparser模块

1.configparser模块介绍 configparser是用来读取配置文件的模块,配置文件格式为:中括号"[ ]"内包含的为section.section 下面为类似于key-value 的配置内容. a.conf的文件内容如下: [user01] name = user01 is_admin = True age = 34 passwd = user123456 [yxwang] name = yxwang age = 25 passwd = 123456 取值: import

Python常用模块——文件复制模块shutil

Python常用模块--文件复制模块shutil shutil模块 高级的文件.文件夹.压缩包处理模块 shutil.copyfileobj(fsrc, fdst) 将文件内容拷贝到另一个文件中 import shutil shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w')) shutil.copyfile(src, dst) 拷贝文件 shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在

无法打开模块文件“C:\Users\fkg\AppData\Local\Temp\.NETFramework,Version=v4.5.AssemblyAttributes.vb”系统找不到指定文件

错误原因:错误5 无法打开模块文件"C:\Users\fkg\AppData\Local\Temp\.NETFramework,Version=v4.5.AssemblyAttributes.vb": 系统找不到指定的文件. 背景:最近在重构的时候遇到了一个问题,提示:对象定义被隐藏.心里一颤,不会是我误删了系统里的东西了吧.还是先从网上查一下吧.后来才知道是Win7系统会涉及到好多权限的问题,需要以管理员身份运行VS2012,然后重启VS就好啦. 找到VS2012,右击选择属性进行如

IBatisNet -- 保护你的配置文件及映射文件信息

通常情况下我们在使用IBatisNet的时候,配置文件和映射文件都是暴露在外的,如果能进入到服务器,那么你的程序的操作数据库的SQL语句,数据库连接字符串等信息都将很轻松的被看到,这样是很危险的.然而IBatisnet自身也没有提供配置文件直接加密的方法,但我们可以用变通的方式来尽可能的保护这些文件中的信息.IBatisnet的映射文件等可以指定为内嵌的资源,利用这个我们可以把一些敏感信息写到另外一个配置文件中,并设置这个配置文件的Build Action为embedded Resource.具

spring-自动加载配置文件\使用属性文件注入

spring-自动加载配置文件\使用属性文件注入 在上一篇jsf环境搭建的基础上 , 加入spring框架 , 先看下目录结构 src/main/resources 这个source folder 放置web项目所需的主要配置,打包时,会自动打包到WEB-INF下 首先看下pom.xml,需要引入一些依赖项:  pom.xml 1. 自动加载配置文件 在web项目中,可以让spring自动加载配置文件(即上图中的src/main/resouces/spring下的xml文件),WEB-INF/w

//读取配置文件(属性文件)的工具类-ConfigManager

package com.pb.news.util; import java.io.IOException;import java.io.InputStream;import java.sql.ResultSet;import java.util.Properties; //读取配置文件(属性文件)的工具类public class ConfigManager { private static ConfigManager configManager; //properties.load(InputS

log4CXX第二篇---配置文件(properties文件)详解

一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为六个级别:TRACE < DEBUG < INFO < WARN < ERROR < FATAL.这六个级别是有顺序的,分别用来指定这条日志