Python中的main函数与import用法
目录
- main函数与import用法
- 目录结构如下
- main函数的作用以及解释
- python 中name == ‘__main__’ 的作用
main函数与import用法
在python中,如果自己封装的库文件中有函数外的语句,那么这些语句是会在库函数被导入时自动执行的,这样就会出现一些奇怪的问题,一个例子如下所示。
目录结构如下
- A.py
- B.py
B.py中的内容如下:
def print_B(): print("B") print("starting B")
A.py中使用import导入print_B()方法:
from B import print_B print_B()
结果如下:
starting B
B
可以发现B.py中的函数外语句是会自动先执行的。但有时候我们确实希望直接运行封装的库能够执行某些功能,但又不希望这些功能在被import的时候被触发,这个时候,就可以把这部分功能显式的放在main方法中。
修改后的B.py如下所示:
def print_B(): print("B") if __name__ == "__main__": print("starting B")
此时运行A.py,结果如下:
B
main函数的作用以及解释
python 中name == ‘__main__’ 的作用
- 经典的英文解释:Make a script both importable and executable
- 中文解释:使脚本可以被调用import并且也可以直接运行
1、直接运行
# cat test_fun.py def fun(): print(__name__) print('this is fun') if __name__ == '__main__': fun() print('this is main')
python test_fun.py __main__ this is fun this is main
2、被调用import
>>> import test_fun >>> test_fun.fun() test_fun this is fun
调用导入时:此处输出没有显示”main“,也就是说模块name = ‘main’ 下面的代码并未执行,main函数没有执行。
这个功能还有一个用处:
调试代码的时候,在”if name == ‘main‘“中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行我们的调试代码,但是如果我们想排查问题的时候,直接执行该模块文件,调试代码能够正常运行!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
学习Python,你还不知道main函数吗
目录 什么是 Python 函数 Python 中的 main 函数是什么 一个基本的 Python main() Python 执行模式 Python 中的 __main__ 是什么 尽可能使用函数和类 使用 __name__ 来控制代码的执行 创建一个包含要运行代码的函数 main() 从 main() 调用其他函数 Python 中的 main 函数充当程序的执行点,在 Python 编程中定义 main 函数是启动程序执行的必要条件,不过它仅在程序直接运行时才执行,而在作为模块导入时不会
-
Python 没有main函数的原因
毫无疑问 Python 中没有所谓的 main 入口函数,但是网上经常看到一些文章提"Python 的 main 函数"."建议写 main 函数"-- 有些人是知情的,他的意图可能是模仿那些正宗的 main 函数,但还有不少人明显是被误导了(或自己误解了),就写出来很累赘的代码. 本期"Python 为什么"栏目来聊聊 Python 为什么没有 main 函数? 在开始正题之前,先要来回答这两个问题:所谓的 "main 函数"
-
详细聊一聊为什么Python没有main函数
目录 前言 为什么必须强制main函数作为入口? 总结 前言 众所周知,Python中没有所谓的main函数,但是网上经常有文章提到“ Python的main函数”和“建议编写main函数”. 其实,可能他们是想模仿真正的main函数,但是许多人都被误导(或误解),然后编写了非常笨拙的代码. 在开始讨论之前,我们先来回答以下两个问题: 所谓的“main函数”究竟是什么意思? 为什么有些编程语言必须编写main函数? 一些编程语言将main函数作为程序的执行入口,比如C/C++.C#.Java.G
-
Python如何在main中调用函数内的函数方式
一般在Python中在函数中定义的函数是不能直接调用的,但是如果要用的话怎么办呢? 一般情况下: def a():#第一层函数 def b():#第二层函数 print('打开文件B') b()#第二层中的函数直接调用 结果显示: Traceback (most recent call last): File "C:/Users/rog/Desktop/wenzhang.py", line 4, in <module> b() NameError: name 'b' is
-
Python中的main函数与import用法
目录 main函数与import用法 目录结构如下 main函数的作用以及解释 python 中name == ‘__main__’ 的作用 main函数与import用法 在python中,如果自己封装的库文件中有函数外的语句,那么这些语句是会在库函数被导入时自动执行的,这样就会出现一些奇怪的问题,一个例子如下所示. 目录结构如下 A.py B.py B.py中的内容如下: def print_B(): print("B") print("starting B&qu
-
python中的 zip函数详解及用法举例
python中zip()函数用法举例 定义:zip([iterable, ...]) zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表).若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同.利用*号操作符,可以将list unzip(解压),看下面的例子就明白了: 示例1 x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] x
-
python中time tzset()函数实例用法
在时间的设置方面,为了能够跟系统时间有更好的区分,我们有时会借用一些函数方法来实现.就拿tzset()来说是设置时间的一种方法,其内在的变量依靠TZ的控制,如果没有设置TZ则以系统时间为准.接下来我们简单就time tzset().TZ进行说明,并对函数的语法.参数.返回值.实例带来使用介绍. 1.说明 tzset()主要用于设置时间变量,它通过获取TZ环境变量初始化tzname变量,在类System-V系统中,它同时设置timezone(相对UTC以西的秒数,向西为正,向东为负)和daylig
-
python中re.findall函数实例用法
1.findall函数返回字符串中所有匹配结果的正则表达式列表. 2.如果没有分组的正则是返回的正则匹配,分组返回的是分组匹配而非整个正则匹配. 实例 找到所有与pattern匹配的子串(不重叠),并将其放入列表. import re lst = re.findall("[1-9]\d*","qw21313h1o58p4kjh8123jkh8435u") for x in lst: print(x,end=" ") #输出结果:21313 1 5
-
python中去空格函数的用法
本文简单介绍了Python中去空格函数的用法,这是一个很实用的函数,希望对大家的Python程序设计有所帮助.具体分析如下: 在Python中字符串处理函数里有三个去空格的函数: strip 同时去掉左右两边的空格 lstrip 去掉左边的空格 rstrip 去掉右边的空格 具体示例如下: >>>a=" gho stwwl " >>>a.lstrip() 'gho stwwl ' >>>a.rstrip() ' gho stwwl'
-
详解python中的index函数用法
1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 def fun(a,b,c): print(a) print(b) print(c) return a fun(11,22,33) #输出:11 #输出:22 #输出:33 指定参数:输入参数时可以不按照顺序输入 def fun(a,b,c): print(a) print(b) print(c) re
-
Python中使用Lambda函数的5种用法
引言 Lambda 函数(也称为匿名函数)是函数式编程中的核心概念之一. 支持多编程范例的 Python 也提供了一种简单的方法来定义 lambda 函数. 用 Python 编写 lambda 函数的模板是: lambda arguments : expression 它包括三个部分: · Lambda 关键字 · 函数将接收的参数 · 结果为函数返回值的表达式 由于它的简单性,lambda 函数可以使我们的 Python 代码在某些使用场景中更加优雅.这篇文章将演示在 Python 中 la
-
Python中的枚举函数enumerate()的具体用法
相比于range,list等简易单词,enumerate仅凭外形都不太让人愿意用.事实上,enumerate还是很好用的. enumerate()是python的内置函数.适用于python2.x和python3.x enumerate在字典上是枚举.列举的意思 enumerate参数为可遍历/可迭代的对象(如列表.字符串) enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用enumerate enumerate()返回的是一
-
浅谈python中的getattr函数 hasattr函数
hasattr(object, name) 作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的). 示例: >>> hasattr(list, 'append') True >>> hasattr(list, 'add') False getattr(object,name,default): 作用:返回object的名称为name的属性的属性值,如果属性name存在,则直接返回其
-
Python中字典的浅拷贝与深拷贝用法实例分析
本文实例讲述了Python中字典的浅拷贝与深拷贝用法.分享给大家供大家参考,具体如下: 最近发现的一个很值得记录的东西就是python字典的浅拷贝问题 首先,明确一下什么是浅拷贝,什么是深拷贝: 简单的来说就是,在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存 也就是说,在浅拷贝情况下,不同引用指向的是同一块内存,改其中一个引用,那么其他引用也会跟着改变 应用到python 的字典复制过程: # codi
随机推荐
- 深入分析JSON编码格式提交表单数据
- iOS支付宝支付方法详解
- JS模态窗口返回值兼容问题的完美解决方法
- 如何将访问者数目周期性地保存?
- 前端主流框架vue学习笔记第一篇
- ASP.NET如何使用web服务的会话状态
- iis支持asp.net4.0的注册命令使用方法
- JavaScript 字符编码规则
- Web跨浏览器进程通信(Web跨域)
- javascript对JSON数据排序的3个例子
- PHP无限分类(树形类)的深入分析
- 实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
- C++ 中的this指针详解及实例
- MySQL全文索引应用简明教程
- 图文解析AJAX的原理
- 一个可以兼容IE FF的加为首页与加入收藏实现代码
- jquery获取点击控件的绝对位置简单实例
- java el简介及用法
- 获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
- Python对excel文档的操作方法详解