从终端运行python程序
终端窗口运行.py程序
首先你要安装python,命令行输入 python 有python提示符 >>> 出现说明安装成功
- #!/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()
第1行和第二行是标准注释,第一行可以让这个hello.py文件直接在Unix/Linux/Mac上运行,第二行可以表示该.py文件使用的标准UTF-8编码;
第四行是一个字符串,表示模块的文档注释,任何模块的第一个字符串都默认为文档的注释
以上就是Python模块的标准文件模板,当然也可以全部删掉不写,但是,按标准办事肯定没错。
补充
1)导入sys
模块后,我们就有了变量sys
指向该模块,利用sys
这个变量,就可以访问sys
模块的所有功能。sys
模块有一个argv
变量,用list存储了命令行的所有参数。argv
至少有一个元素,因为第一个参数永远是该.py文件的名称
2)当我们在命令行运行hello
模块文件时,Python解释器把该模块内的一个特殊变量__name__
置为__main__
,而如果在其他地方导入该hello
模块时,if
判断将失败,因此,这种if
测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。
输入命令格式
这里的地址是完整的地址,
- python D:\desktop\forTest.py #文件的完整目录
结果:
命令行里的 python shell 环境
打开cmd后直接输入 python 会进入 python 的 shell 环境,这里可以可以输入命令,还有就是 shell 里会有提示符 >>>
如 print('I love you')
运行结果:
使用 exit() 退出 python 的 shell 环境
File "<stdin>", line 1 错误:
在shell 里面输入 python +程序名字 ,会出现这个错误,应该在终端下运行(见上)
模块内的作用域
参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017455068170048
这个模块内的作用域和变量的作用域有些区别,前者区分的是不同模块内的变量名,即该模块被导入后模块内的变量是否能被新模块引用。(但是通过增加下划线确实能将public变量变为private变量,在一个模块中的变量也能受到影响,参见面向对象编程
在模块中,我们可能会定义很多函数和变量,有的函数和变量我们希望给别人使用,但是有的变量和函数我们不希望被别人使用。在python中,是通过_前缀来实现的。
正常的函数和变量名是公开的(public),可以被直接引用,比如:abc
,x123
,PI
等;
类似__xxx__
这样的变量是特殊变量,可以被直接引用(但是不可以自己创建),但是有特殊用途,比如上面的__author__
,__name__
就是特殊变量,hello
模块定义的文档注释也可以用特殊变量__doc__
访问,我们自己的变量一般不要用这种变量名;
类似_xxx
和__xxx
这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc
,__abc
等;
之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。
- #被导入的模块forTest2.py代码
- #__arbitrarily__=='不能任意命名的特殊变量'#不能这样,会报错
- arbitrarily='能被直接引用的变量'
- _arbitrarily='非公开,不应该被直接引用,但是能'
- __arbitrarily='非公开,不应该被直接引用,但是能,和上面的一样'
- #作为测试的模块,其中导入了forTest2.py
- import forTest2
- print(forTest2.arbitrarily)
- print(forTest2._arbitrarily)
- print(forTest2.__arbitrarily)
- print(forTest2.__name__)
- #输出
- 能被直接引用的变量
- 非公开,不应该被直接引用,但是能
- 非公开,不应该被直接引用,但是能,和上面的一样
- forTest2
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)
在模块里公开greeting函数,而把内部逻辑用private函数隐藏起来了,这样,调用greeting函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法,即:外部不需要引用的函数全定义为private,只有外部需要引用的函数才定义为public
数据封装、继承和多态是面向对象编程的三大特点
模块的搜索路径
当我们试图导入一个模块时,python会在指定的路径下搜索对应的.py文件,如果找不到就会报错
- >>> import mymodule
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- ImportError: No module named mymodule
默认情况下,python会搜索当前目录,所有已安装的内置模块和第三方模块,搜索路径存放在sys的path变量当中
- >>> import sys
- >>> sys.path
- ['', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', ..., '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']
有两种办法可以添加自己的搜索目录
一是直接修改sys.path,添加要搜索的目录
- >>> import sys
- >>> sys.path.append('/Users/michael/my_py_scripts')
这种方法是在运行时修改,运行结束后失效
第二种方法时修改环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中,设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响
从终端运行python程序的更多相关文章
- 编辑器sublime、终端运行python
sublime编辑器 Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用) Sublime Text是由程序员Jon Skinner于2008年1月份 ...
- 解释器、环境变量、如何运行python程序、变量先定义后引用
python解释器的介绍.解释器的安装.环境变量的添加为什么加环境变量.如何调取不同的解释器版本实现多版本共存.python程序如何运行的.python的变量定义 一.python解释器: 用来翻译语 ...
- 教你如何编写、保存与运行 Python 程序
第一步 接下来我们将看见如何在 Python 中运行一个传统的“Hello World”程序.Python教程本章将会教你如何编写.保存与运行 Python 程序. 通过 Python 来运行的你的程 ...
- 运行python程序
1 在windows下运行python程序 1)从DOS命令行运行python脚本 用python解释器来执行python脚本,在windows下面python解释器是python.exe,我的pyt ...
- editplus3运行Python程序
editplus3是一款不错的编辑器,他可以编译,运行java,php等各种程序,现把他运行Python程序的方法贴出来,首先得安装python,然后打开editplug3,工具——配置用户工具——组 ...
- 如何使用sublime编辑器运行python程序
现在越发喜欢sublime编辑器了,不仅界面友好美观.文艺,可扩展性还特别强. sublime本身是不具备运行python程序的能力的,需要做些设置才可以.以下是安装好sublime后设置的步骤: 点 ...
- Linux(9)后台运行python程序并输出到日志文件
后台运行python程序并标准输出到文件 现在有test.py程序要后台部署, 里面有输出内容 使用命令: nohup python -u test.py > test.log 2>&am ...
- 周一02.3运行python程序的两种方式
一.运行python程序的两种方式 方法一:交互式: 优点:输入一行代码立刻返回结果 缺点:无法永久保存代码 方法二: ...
- Notepad++编写运行python程序
Notepad++编写运行python程序. 1.菜单栏->语言->P->Python设置语言为Python 2.写好代码后ctrl+s保存文件为py文件 3.菜单栏->运行, ...
随机推荐
- (转载) 据说年薪30万的Android程序员必须知道的
据说年薪30万的Android程序员必须知道的帖子 标签: android 2015-03-12 16:52 28705人阅读 评论(14) 收藏 举报 Android中国开发精英 目前包括: And ...
- php正则检测字符串由单一字符组成
$str = 'aaa' $firstChar = substr($str , 0, 1); $pattern = "/^[$firstChar]+$/"; $ret = preg ...
- php面向对象的基础:OOP的常量
常量(constant) 用来表示不会改变的值.对于从该类实例化的任何对象来说,常量值在这些对象的整个生命周期中都保持不变. class Computer{ const PI=3.1415926; } ...
- 连类比事-category和extension
extension看起来很像一个匿名的category,但是extension和有名字的category几乎完全是两个东西. extension在编译期决议,它就是类的一部分,在编译期和头文件里的@i ...
- 使用windowbuilder的时候更方便——设置默认把控件生成为成员变量而不是局部变量
找了一大圈,最后还是上Google才找到这个方法的.以前改过了,重新设置工作目录之后设置都丢失了,却找不到改的办法,这次长个记性,记在自己博客里. 设置成成员属性的好处是随后使用这些控件的时候方便.
- HDU-1215 七夕节 数论 唯一分解定理 求约数之和
题目链接:https://cn.vjudge.net/problem/HDU-1215 题意 中文题,自己去看吧,懒得写:) 思路 \[ Ans=\prod \sum p_i^j \] 唯一分解定理 ...
- python yield 生成器的介绍(转载)
您可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ? 我们先抛开 generator,以一个常见的编程题目来展示 yield ...
- c 和 指针读书笔记(1)
1.字符串常量:出现在表达式中,其值是一个指针 "abc" + 1; //b 2.回掉函数:就是把函数的作为参数传入父函数,函数本身就是一个地址,传址肯定没问题.至于父函数是想用函 ...
- centos部署nginx服务
1.准备安装程序 pcrl-8.43.tar.gz zlib-1.2.11.tar.gz openssl-1.0.1j.tar.gznginx-1.9.9.tar.gz 2.将下载的包拷贝到/us ...
- hdfs的HA集群搭建的相关配置
前期准备就不详细说了 .修改Linux主机名 .修改IP .修改主机名和IP的映射关系 ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机.阿里云主机等) /etc/ ...