层次的递进与返回

#输入quit的时候返回上一阶层,输入exit退出所有的循环

tag=True
while tag==True:
level1=input('level1:')
if level1=='quit':
break
if level1 =='exit':
tag=False
while tag==True:
level2=input('level2:')
if level2 == 'quit':
break
if level2 == 'exit':
tag =False
while tag==True:
level3=input('level3:')
if level3 == 'quit':
break
if level3 == 'exit':
tag =False

查询与修改文件的大程序

1.文件txt的内容

name 杀马特
    年龄18
    身高160
    体重80
name 土嗨
    年龄21
    身高180
    体重80
name aaaaa
    年龄120
    身高100
    体重160

2.主程序

模块:每一个py文件就是一个模块

如果选package里面会多一个__init__.py的空文件,如果没有init就是directory文件
用package的时候,如果需要使用另一个py文件里面的函数的时候

1.比如说在ab.py里面需要导入另一个cal.py里面的函数

需要在ab.py的顶头写上

import cal

2.如果要cal里面的add函数则写cal.add()

3.如果觉得每次cal.add()很麻烦,可以改写

成from cal import add

4.如果ab.py和my_mouudle文件夹同一级别,现在需要在ab.py中使用my_moudle里

的cal.py,那么应该写from my_moudle import cal,这样才能用cal.py里面的函数

5.程序模块化的标准写法:

程序的入口在bin.py,其他的py文件放置在同一级的moudle文件夹里面。
然后在bin.py里面吧moudle文件夹里面的所有py文件调用进来。

6.执行哪个py文件的时候,解释器会把目录光标指向那个py文件的上一级的文件夹,

此时那个上级文件夹里面的py文件 都可以互相import到。
由于bin文件和module文件为同一级别,所以module里面的py
文件的写法应该是from module import xxx

目录

class
    bin.py
    __init__.py
    mymodule
        main.py
        send.py
        __init__.py

bin.py里面的内容

from mymodule import main
main.add(1,3)
main.py里面的内容
from mymodule import send
def add(x,y):
send.addprint()
print(x+y)
return x+y
send.py里面的内容
def addprint():
res=print('the add result is ')
return res

1.如果module文件夹里面还有module文件夹

可以用.来连接来调用。

目录

class
    bin.py
    __init__.py
    mymodule
        main.py
        send.py
        __init__.py
        mymodule1
             mymodule2
                 seek.py
要import里面的seek.py
可以写from mymodule.mymodule1.mymodule2 import seek

 

__name__的作用:

找出引用__name的这段的程序来自于哪里,比如在bin内输入
print(__name__),此时打印__name__在本函数bin内执行,
所以结果是__main__.


但是如果在它的模块里的main.py里面的函数里输入print(__name__)
,并且在bin中调用那个函数,那么显示出来将会是main.py的路径
 
__name__运用方法:
if __name__ =='main':  写这句话之后再进行后续程序的书写
用这句话可以分开测试代码和运行代码

比如想在module里面的py文件书写测试代码,但是如果在module
里面写了测试代码,主函数bin运行的时候也会执行测试代码。
如果在测试代码的开头加上if __name__ =='main',这样执行主函数
bin的时候,测试代码将不会运行。
bin文件里面的开头加上if __name__ =='main'可以保证bin文件无法
被调用

__file__的运用方法:

os.path.abspath(__file__)是当前py文件的绝对路径。
实例:如何把当前bin文件.py的上一级的文件夹的绝对路径加入绝对路径

import os
print(os.path.dirname(os.path.abspath(__file__)))
path1=os.path.dirname(os.path.abspath(__file__))
sys.path.append(path1)

Py层次递进与文件修改大程序,模块,name与file的更多相关文章

  1. Python 文件修改-函数介绍

    上节课复习:1.字符编码 1.1 如何解决乱码问题: 字符存取使用的编码标准不一致 1.2 文件头 在文件的首行写入文件头,用于控制Python解释器读取py文件内容时使用的编码 #coding:文件 ...

  2. node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用提高nodejs调试效率

    在开发或调试Node.js应用程序的时候,当你修改js文件后,总是要按下CTRL+C终止程序,然后再重新启动,即使是修改一点小小的参数,也 总是要不断地重复这几个很烦人的操作.这是因为Node.js ...

  3. 如何在Ubuntu Unity上修改应用程序图标

    转自如何在Ubuntu Unity上修改应用程序图标 这篇文章将教大家在Ubuntu Unity上修改应用程序图标,这个教程适合于Ubuntu 14.04, Ubuntu 13.10, Ubuntu ...

  4. 凹凸曼的修改zencart 程序(经典!)

    ==================================================================================================== ...

  5. Git版本控制:Git查阅、撤销文件修改和撤销文件追踪

    http://blog.csdn.net/pipisorry/article/details/47867097 查看文件的修改历史 git log --pretty=oneline 文件名 # 显示修 ...

  6. Python:基于MD5的文件监听程序

    前述 写了一个基于MD5算法的文件监听程序,通过不同的文件能够生成不同的哈希函数,来实现实现判断文件夹中的文件的增加.修改.删除和过滤含有特定字符的文件名的文件. 需求说明 需要实现对一个文件夹下的文 ...

  7. 长连接锁服务优化实践 C10K问题 nodejs的内部构造 limits.conf文件修改 sysctl.conf文件修改

    小结: 1. 当文件句柄数目超过 10 之后,epoll 性能将优于 select 和 poll:当文件句柄数目达到 10K 的时候,epoll 已经超过 select 和 poll 两个数量级. 2 ...

  8. chattr 改变文件、目录属性 (chmod、passwd等涉及文件修改的命令提示Operation not permitted)

    与chmod这个命令相比,chmod只是改变文件的读写.执行权限,更底层的属性控制是由chattr来改变的. lsattr查看文件或目录属性 chattr命令的用法:chattr [ -RVf ] [ ...

  9. MongoDB日志文件过大

    MongoDB日志文件过大 MongoDB启动的时候指定了--logpath为一个日志文件.随着时间此文件会变得越来越大,达到好几个G. 因为不想让MongoDB进程重新启动,所以不能停止进程删除此文 ...

随机推荐

  1. NameVirtualHost *:80 has no VirtualHosts

    服务器会包含所有的   .conf     后缀的文件 当出现如标题所示的错误的时候,检查所有 .conf 文件,是否端口占用,或者重复命令行的情况

  2. centos8中的MySQL卸载和安装

    centos8中的MySQL卸载和安装 前言 前几天在自己的服务器上安装了一个NDB集群[而且还没有成功] 放弃治疗后用一台没有mysql的服务器实现了单机版本的集群. 本来以为这事到这就结束了,结果 ...

  3. 制作3D小汽车游戏(下)

    书接上回,这一节我们分模块说一说怎么写一个这样的游戏 1. 初始化场景.相机和渲染器 这几乎是绘制three必须做的事情,我们有两套场景和相机,一个是主场景和相机,另一个是小地图的场景和相机(用来俯视 ...

  4. 类似818tu.c微信小说分销系统设计之多公众号网页授权自动登录源码分享

    /** 转载请保留原地址以及版权声明,请勿恶意修改 *  作者:杨浩瑞  QQ:1420213383  独立博客:http://www.yxxrui.cn * [后台]http://xiaoshuo. ...

  5. 安装篇八:配置 Nginx 使其支持 MySQL 应用

    配置说明 (让nginx  MySQL(中间件)之间建立关系) 第一个里程: 编写nginx.php首页文件 第二个里程:重启nginx 第三个里程:访问网页测试 打开浏览器访问:http://47. ...

  6. svg基础--基本语法与标签

    svg系列–基础 这里会总结svg的基础知识和一些经典的案例. svg简介 SVG(Scalable Vector Graphics)is an XML-based Language for crea ...

  7. Java源码系列4——HashMap扩容时究竟对链表和红黑树做了什么?

    我们知道 HashMap 的底层是由数组,链表,红黑树组成的,在 HashMap 做扩容操作时,除了把数组容量扩大为原来的两倍外,还会对所有元素重新计算 hash 值,因为长度扩大以后,hash值也随 ...

  8. Kubernetes官方java客户端之五:proto基本操作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. 风炫安全web安全学习第二十九节课 CSRF防御措施

    风炫安全web安全学习第二十九节课 CSRF防御措施 CSRF防御措施 增加token验证 对关键操作增加token验证,token值必须随机,每次都不一样 关于安全的会话管理(SESSION) 不要 ...

  10. for _ in range( ):

    for _ in range( ): { //函数体 } 其中"-"只是一个占位符,可以把它理解为i或者j等等任意的字母. 上面代码相当于同下: for i in range( ) ...