__name__的使用 | 学习笔记

简介: 快速学习__name__的使用

开发者学堂课程【Python 入门 2020年版:__name__的使用 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10364


__name__的使用

内容介绍:

一、案例概要

二、__name__的作用

 

一、案例概要

1.在 demo 文件中存在一种几种函数,在代码中如果添加了以下内容,

def division(a,b):

return a / b

division 进行的除法运算,将上述代码可以达到让别人使用的目的,但不完全的将代码给别人,需要再给别人之前进行测试,加入 print(division(4,2)) 来测验正确性

代码内容为:

_all_=[‘m’,’test’]

m=’yes’

n=’100’

def test():

print(‘我是demo模块里的test方法’)

def foo():

print(‘我是demo模块里的foo方法’)

def division(a,b):

return a / b

print(division(4,2)) 

结果如下图:

image.png

2.将 print 所在行修改 print( ‘ 测试以下 division 函数,结果是’ division(4,2))

代码内容为:

_all_=[‘m’,’test’]

m=’yes’

n=’100’

def test():

print(‘我是demo模块里的foo方法’)

def division(a,b):

return a / b

print( ‘测试以下division函数,结果是’, division(4,2))

结果如下图:

image.png

注意:在这里直接运用 demo.py ,它会直接打印出内容。

3.通过运行之前课程中的 03 使用自定义代码模块的代码,在 demo.py 文件中的 print 所在行代码是否可以运行?

先运行 03- 使用自定义模块的代码,会发现能够直接运行 demo.py 文件中的 print语句。

在这个文件中只要写了 from demo import * 或是 import demo 这种类似的语法,就会自动执行 demo 中的代码,这个 demo.py 文件写到了 print 语句,所以会自动执行。

4.如何在所写的 demo 模块中判断添加的方法好坏?

这个代码应该要在测试代码中直接运行才能够执行的,如果不直接运行,而是当一个模块导入到另一个文件中,它是不会执行。即在下图右侧部分选中右击运行就会执行,在左侧部分只是把 demo 当作一个模块,它不会运行。

5.如何保证把 demo 当作模块导入,即导入后的 demo 不会运行?

只要读了新文件,是类似与 import 的语句,它就会在运行新文件的时候执行

这需要用到__name__,在 demo.py 文件中添加 print(‘demo 里的 name是:’,__name__)

代码内容变为:

_all_=[‘m’,’test’]

m=’yes’

n=’100’

def test():

print(‘我是demo模块里的test方法’)

def foo():

print(‘我是demo模块里的foo方法’)

def division(a,b):

return a / b

print(‘demo里的name是:’,__name__)

print(division(4,2))

在右侧 demo.py 文件的运行效果是:

会发现它所显示的是__main__

在左侧 03- 使用自定义模块 .py 文件的运行效果是:

会发现它所显示的是 name

 

二、__name__的作用

它是当直接运行 py 文件的时候,它的值是__main__,如果这个 py 文件作为一个模块导入的时候,值是文件名。

此时在 demo.py 文件中只需要加入 if __name__==‘__main__‘;语句

代码内容为:

_all_=[‘m’,’test’]

m=’yes’

n=’100’

def test():

print(‘我是demo模块里的test方法’)

def foo():

print(‘我是demo模块里的foo方法’)

def division(a,b):

return a / b

if __name__==‘__main__‘;

print(‘demo里的name是:’,__name__)

print(division(4,2))

把 demo 文件作为模块导入 03- 使用自定义模块 .py 文件运行结果:

效果中不在显示 demo 中的内容

在大多数 python 语句中会出现很多次的if __name__==‘__main__‘;语句,这节课就是来掌握这条语句的使用方法。

相关文章
|
负载均衡 测试技术 应用服务中间件
性能测试常见瓶颈分析及调优方法总结
性能测试常见瓶颈分析及调优方法总结
780 0
|
存储 Java Spring
Spring之国际化:i18n
【1月更文挑战第17天】 一、i18n概述 二、Java国际化 三、Spring6国际化 1、MessageSource接口 2、使用Spring6国际化
479 1
|
人工智能 自然语言处理 算法
更快、更强、更经济!港大开源大模型RAG系统LightRAG
香港大学研究团队推出LightRAG,一款新型检索增强生成系统。LightRAG通过引入图结构优化文本索引和检索,克服了传统RAG系统在上下文感知、数据表示和更新效率方面的局限。其双级检索系统、图结构与向量表示的融合及增量更新算法,显著提升了检索准确性和效率,适用于智能客服、知识问答和智能搜索等多个领域。
792 3
|
机器学习/深度学习 算法 Python
机器学习基础:用 Lasso 做特征选择
机器学习基础:用 Lasso 做特征选择
机器学习基础:用 Lasso 做特征选择
|
SQL 运维 程序员
一个功能丰富的SQL审核查询平台
一个功能丰富的SQL审核查询平台
395 2
|
存储 JSON 前端开发
jQuery Get 请求参数转换为 JSON
【8月更文挑战第22天】
309 2
|
机器学习/深度学习 人工智能 安全
同等参数中最强,在苹果15Pro上也能运行!谷歌又“卷”出了端侧小模型 Gemma 2 2B...
在AI技术快速演进的背景下,谷歌推出的Gemma 2 2B模型以其小巧体积和卓越性能引起关注。这款仅20亿参数的轻量级语言模型通过知识蒸馏技术,展现出超越大型模型的能力,在Chatbot Arena测试中获得1130分,超过了GPT-3.5-Turbo等竞争对手。Gemma 2 2B不仅性能出众,还能在多种硬件上高效运行,特别适合本地设备。此外,它的开源特性及易于使用的特性降低了AI应用门槛。伴随Gemma 2 2B发布的还有ShieldGemma和Gemma Scope,前者用于过滤有害内容,后者则提高了模型的透明度和可解释性,共同推动AI技术的负责任发展。
515 2
|
网络协议 Linux C++
超级好用的C++实用库之网络
超级好用的C++实用库之网络
228 0
|
Ubuntu
蓝易云 - Ubuntu18.04交叉编译curl-7.61.0
这样,curl就被交叉编译并安装到了/usr/arm-linux-gnueabihf目录下。你可以将其拷贝到目标机器上进行使用。
645 2
|
数据采集 机器学习/深度学习 人工智能
数据标注(二)
数据标注(二)
1537 0