模块和作用域

#!usr/bin/env python3
#-*- coding: utf-8 -*-
#使用模块
‘a test module‘
__author__ = ‘Michael Liao‘
import sys
def test():
    args = sys.argv
    if len(args) == 1:

        print(‘Hello, World‘)
    elif len(args) == 2:
        print(‘Hello, %s!‘ %args[1])
    else:
        print(‘Too many arguments!‘)

if __name__ == ‘__main__‘:
    test()
#sys模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称,例如:

#运行python3 hello.py获得的sys.argv就是[‘hello.py‘];
#注意:
if __name__==‘__main__‘:
    test()
#当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。

#作用域
#正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等;

#类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;
#类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;

#之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。
def _private_1(name):
    return ‘Hello, %s‘ % name
def _private_2(name):
    return ‘Hi, %s‘ % name
def greeting(name):
    if len(name) > 3:
        return _private_1(name)
    else:
        return _private_2(name)
t = greeting(‘rain‘)
print(t)
时间: 2025-01-06 02:39:06

模块和作用域的相关文章

AngularJS自学之路(二)——模块和作用域

模块 使用模块带来的好处 1. 保持全局命名空间的清洁: 2. 编写测试代码更容易,并能保持其清洁,以便更容易找到互相隔离的功能: 3. 易于在不同应用间复用代码: 4. 使应用能够以任意顺序加载代码的各个部分. AngularJS允许我们使用angular.module()方法来声明模块,这个方法能够接受两个参数, 第一个是模块的名称,第二个是依赖列表,也就是可以被注入到模块中的对象列表. //这个方法相当于AngularJS模块的setter方法,是用来定义模块的. angular.modu

python 模块的作用域

作用域:变量,函数 Public(公开):可以直接被引用,如:abc, PI, test() ,类似__xxx__这样的特殊变量 .联想:C语言中, 当模块的某个东西希望外部能够引用,就在前面添加extern,或者不添加extern也可以 Private(秘密):不应该被直接引用,如:_xxx / __xxx 这样的变量.联想:C语言中, 当模块的某个东西不希望外部被引用时,就在前面添加static 当一个模块中存在部分不想被其他人引用的变量或函数时,如何操作?如下: private.py是被调

ES6 的模块系统

此文为翻译,原文地址在这儿:https://hacks.mozilla.org/2015/08/es6-in-depth-modules/[转] ES6 是 ECMAScript 第 6 版本的简称,这是新一代的 JavaScript 的标准.ES6 in Depth 是关于 ES6 的一系列新特性的介绍. 遥想 2007 年,笔者开始在 Mozilla 的 JavaScript 团队工作的时候,那个时候典型的 JavaScript 程序只有一行代码. 两年之后, Google Map 被发布.

javascript模块规范:CommonJS,AMD,CMD

CommonJS/Nodejs实现 Node.js上下文提供的变量 require:函数,用于引用依赖模块,依赖模块被引用为对象,即可食用提供的方法和变量,require()接受一个模块标识参数. module:对象,代表当前模块本身 exports:对象,module的属性,作为模块的唯一出口,用来导出当前模块提供的方法和变量,将方法或变量挂载为exports对象的属性即可导出,也可以直接将方法或变量赋给module.exports导出 “`javascript //挂载方式导出方法和变量 e

python函数的动态传参.作用域与命名空间

一.动态传参1.*表示动态传参. 可以接受所有的位置参数传参的时候自动的把实参打包成元组 交给形参 def chi(*food): print(food) chi() # 动态传参可以不传参数 chi(good_food = "胡辣汤") # 关键字传参 chi("胡辣汤", "疙瘩汤", "西红柿鸡蛋汤") chi("大猪蹄子","大汉堡","薯条","圣

python模块导入细节

python模块导入细节 官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码文件按照功能可以分为两种类型: 用于执行的可执行程序文件 不用与执行,仅用于被其它python源码文件导入的模块文件 例如文件a.py和b.py在同一目录下,它们的内容分别是: # b.py x="var x in module b" y=5 # a.py: import b import sys print(b.x)

python基础--导入模块

一,import的使用1, 模块就是一组功能的集合体,我们的程序可以导入模块来复用模块中的功能一个模块就是包含了一组功能的python文件,例如demo.py 可以通过import来使用这个文件定义demo模块如下 print("导入模块") num = 1000 def read1(): print('demo模块',num) def read2(): print('demo模块') read1() def change(): global num num = 0 模块中可以包含语句

词法作用域2 - 函数作用域和块作用域

隐藏内部实现 最小授权原则 -- 最小限度地暴露必要内容. 所以不会将变量和函数都声明在全局作用域中 function doSomething(a) { b = a + doSomethingElse(a * 2); console.log(b * 3); } function doSomethingElse(a) { return a - 1; } var b; doSomething(2); // 15 变量b和函数doSomethingElse()是函数doSomething()的私有内容

pythonの函数学习笔记(一)

函数是可以实现一些特定功能的小方法或小程序定义函数function的方法:def function_name(arg1,arg2[,...]): statement [return value]注意事项:1.def开头,代表定义函数,def和函数名中间要敲一个空格:2.返回值不是必须的,如果没有renturn语句,则默认返回值None:3.函数名必须以下划线或字母开头,可以包含任意字母.数字或下划线的组合,区分大小写且不能是保留字: py使用名称空间的概念存储对象,这个名称空间就是对象作用的区域