python基础——使用模块

 

python基础——使用模块

  

  Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。

  我们以内建的sys模块为例,编写一个hello的模块

#!/usr/bin/env python3
# -*- coding: utf-8 -*-' a test module '__author__ = 'Michael Liao'import sysdef test():args = sys.argvif 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行和第2行是标准注释,第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行,第2行注释表示.py文件本身使用标准UTF-8编码

  第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释

  第6行使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名

  以上就是Python模块的标准文件模板,当然也可以全部删掉不写,但是,按标准办事肯定没错。

  后面开始就是真正的代码部分。

  你可能注意到了,使用sys模块的第一步,就是导入该模块:

import sys

  

  导入sys模块后,我们就有了变量sys指向该模块,利用sys这个变量,就可以访问sys模块的所有功能

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

  运行python3 hello.py获得的sys.argv就是['hello.py']

  运行python3 hello.py Michael获得的sys.argv就是['hello.py', 'Michael]

  最后,注意到这两行代码

if __name__=='__main__':test()

  

  当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。

  我们可以用命令行运行hello.py看看效果

$ python3 hello.py
Hello, world!
$ python hello.py Michael
Hello, Michael!

  如果启动Python交互环境,再导入hello模块

$ python3
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello
>>>

  

  导入时,没有打印Hello, word!,因为没有执行test()函数

  调用hello.test()时,才能打印出Hello, word!

>>> hello.test()
Hello, world!

  

作用域

  在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的

  正常的函数和变量名是公开的(public),可以被直接引用,比如:abcx123PI

  类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author____name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名

  类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc

  之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量

  private函数或变量不应该被别人引用,那它们有什么用呢?请看例子

def _private_1(name):return 'Hello, %s' % namedef _private_2(name):return 'Hi, %s' % namedef greeting(name):if len(name) > 3:return _private_1(name)else:return _private_2(name)

  

  我们在模块里公开greeting()函数,而把内部逻辑用private函数隐藏起来了,这样,调用greeting()函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法,即:

  外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public

转载于:https://www.cnblogs.com/codingmengmeng/p/5816735.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣——键盘行

给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 示例: 输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"]注意: 你可…

网络空间技术实验室:打造信息安全技术培育平台

从PC互联网到移动互联网,音视频、图片越来越成为大众关注的热点。过去,人们习惯于在网络浏览文字新闻;今天,人们对于视频新闻、图片新闻的接受度更高。 网络的发展无疑给人们带来了便利。但同时,一个不可否认的事实是&…

如何对mysql做物理备份_如何创建物理MySQL备份

前提条件在开始之前,确保你有一个有sudo权限的用户和一个MySQL数据库服务器。查找数据目录使用root密码登录到MySQL服务器。$ sudo mysql -u root -p下面的SQL显示MySQL实例的数据目录。mysql> select datadir;输出类似于-----------------| datadir |----------…

freecodecamp_1000天的freeCodeCamp

freecodecampToday, the freeCodeCamp community turns 1,000 days old. We’ve accomplished a lot together in that time:今天,freeCodeCamp社区已经有1000天的历史了。 到那时我们已经共同完成了很多工作: 6,000 campers have gotten their first d…

如何正确遍历删除List中的元素,你会吗?

遍历删除List中的元素有很多种方法,当运用不当的时候就会产生问题。下面主要看看以下几种遍历删除List中元素的形式: 1.通过增强的for循环删除符合条件的多个元素 2.通过增强的for循环删除符合条件的一个元素 3.通过普通的for删除删除符合条件的多个元素…

Jmeter 通过json Extracted 来获取 指定的值的id

在没有 精确或模糊查询的接口时可以使用jmeter 获取指定的值的ID import java.lang.String ; String getTargetName"iphone632g"; //判读相应结果中是否包含指定值:iphone632g boolean containsCategoryprev.getResponseDataAsString().contains(getTarge…

mysql 结果保存到文件_将MySQL中sql运行结果保存到文件

将MySQL中sql运行结果保存到文件有两种方法。方法一:在mysql>提示符中使用teemysql> tee output.txtLogging to file output.txtmysql> noteeOutfile disabled.或者mysql> \T output.txtLogging to file output.txtmysql> \tOutfile disabled.这个类…

获取电脑和操作系统信息-uname

用法:uname [选项]...输出一组系统信息。如果不跟随选项,则视为只附加-s 选项。-a, --all 以如下次序输出所有信息。其中若-p 和-i 的探测结果不可知则被省略:-s, --kernel-name 输出内核名称-n, --nodename 输出网络节点…

MobileSpace-关于我的激情的故事

by Monte Thakkar通过Monte Thakkar MobileSpace-关于我的激情的故事 (MobileSpace — A story about my passions) 我发现,学习和教授iOS开发的旅程 (My journey to discovering, learning, and teaching iOS development) “Let this be the first thing you hea…

Do you have an English name? 你有英文名吗?

文中提到的所有人名都是虚构的,如有雷同,纯属巧合。当然,你的洋名儿也可能是德文、法文、意大利文,等々々々。 全球化时代,和老外的交流也多了。“高端”的程序员想要进欧美系外企,想要出国看世界&#xff…

php+nginx导入太大文件报http error错误的原因

项目中用到太多的导入导出,最近换了服务器,导致一旦文件过大就出现http error的错误,查找后是配置文件没有同步的原因,php.ini需要几个配置 upload_max_filesize 20M 表示上传的最大文件为20M post_max_size 20M 允许post提交的…

rhel 7.2 安装mysql_在rhel7.2下源码安装mysql-5.6.35

如何在一台新机rhel7.2下源码安装mysql-5.6.35一、前期准备工作1、首先安装依赖包,避免在安装过程中出现问题yum -y install gcc gcc-c cmake ncurses-devel autoconf perl perl-devel2、下载源码包3、创建mysql安装目录以及数据存放目录[[email protected] liuzhen…

网络安全不是奢侈品,而是必需品

2016年国家网络安全宣传周于9月19日至25日在武汉隆重举办。《长江日报》记者高萌采访了思科全球副总裁、大中华区首席技术官曹图强,以下是9月19日《长江日报》刊登的采访全文: 思科全球副总裁、大中华区首席技术官曹图强昨日下午,思科全球副总…

开源开发平台_电线之间:开源开发商Sindre Sorhus的采访

开源开发平台by Vivian Cromwell通过维维安克伦威尔(Vivian Cromwell) 电线之间:开源开发商Sindre Sorhus的采访 (Between the Wires: An interview with open source developer Sindre Sorhus) Here’s my interview Sindre Sorhus, a prolific open source devel…

白宫力挺FBI:库克干扰司法与正义

据中文业界资讯站报道,眼看着谷歌、Mozilla、Facebook等大组织都开始声援库克,美国白宫也就关于要求苹果协助解锁iPhone调查加州枪击案的事件作出了回应。白宫新闻秘书Josh Earnest强调,FBI并没有要求苹果重新设计产品或者是给它们留后门&…

UUID,加密解密算法的使用

注意的地方: Base64Encoder,Base64Decoder并不属于JDK标准库范畴,但是又包含在了JDK中 解决方法:按照如下方法设置Eclipse导入%JAVA_HOME%\jre\lib目录下的rt.jar包即可,Project->Properties,选择Java Build Path设…

sae mysql 同步本地_MYSQL入门之三_将本地MySQL数据导入SAE数据库_MySQL

bitsCN.comMYSQL入门之三_将本地MySQL数据导入SAE数据库1. MySQL字符集MySQL的默认字符集是latin1,将本地MySQL库导出成sql,再导入到SAE的MySQL时中文字符出现乱码,解决方法是将本地mysql默认字符集也设成utf8查看当前MySQL字符集mysql> s…

vim block vim_我如何学会爱Vim

vim block vimby Sanchit Gera通过Sanchit Gera 我如何学会爱Vim (How I learned to love Vim) I’ve had a bitter-sweet relationship with Vim for a long time.我与Vim有一段苦甜的恋情。 Over the last couple of years, I tried to learn Vim on several occasions. Ea…

AS 自定义 Gradle plugin 插件 案例 MD

Markdown版本笔记我的GitHub首页我的博客我的微信我的邮箱MyAndroidBlogsbaiqiantaobaiqiantaobqt20094baiqiantaosina.comAS 自定义 Gradle plugin 插件 案例 MD 目录 目录AS 中自定义 Gradle plugin编写插件传递参数发布插件到仓库使用插件AS 中自定义 Gradle plugin 参考1 参…

学好Java的10个建议

1.克服惯性  将大块任务细分为微任务。  2.关注大牛  你想学的或许是一门新的编程语言、应用框架或者是新的工具,一旦你确定了想要的是什么,就立刻去收集相应的优秀群体所做的一些优质的工作成果。这些可以从YouTube、Vimeo、HackerNews、各种博客…