【Python】[03]函数模块

注释代码

在Python中,常用的注释技术是使用一个三重引号来建立多行注释,如果使用了一个三重引号,而没有将它赋值给一个变量,三重引号之间的所有内容都被认为是一个注释。

如果在一行的任意位置加了“#”符号,从这一点直到当前行末尾的所有内容都是注释,但是如果“#”出现在三重引号之间,那么“#”就只是注释内容的一部分。

接下来,发布Python代码到PYPI

首先,为模块创建一个文件夹命名为nester,将上个博客中最后保存的nester.py文件复制到这个文件夹中,然后在文件夹中再创建一个setup.py文件,setup.py文件的代码如下:

注意:setup.py中的代码一定要是这样的,注意空格和缩进,本人调试好久才通过??

构建发布

书上的这个地方,有句话说:“在nester文件夹中打开一个终端窗口”,让我很困扰,然后查了下,有两种方法可以实现“打开一个终端窗口”的操作:

方法1、在“运行”中输入cmd,然后输入cd+空格+nester文件所在目录,回车

方法2、在nester文件夹中,使用shift+鼠标右键调出命令窗口

这两种方法都可以成功打开一个终端窗口,然后就开始正式构建发布

在终端窗口中输入:python setup.pu sdist

将发布安装到本地副本

书上说,在终端窗口中,键入如下命令:sudo python setup.py install,但是我输入sudo报出无法识别,去掉sudo就好了

(PS:这里报了一个SyntaxError,是我的nester.py文件写的有问题,后来已修改,请忽略不计)

安装后我的的文件夹中多了几个文件

将模块构建发布并安装到本地后,就可以在程序中导入该模块

很遗憾的是,并没有得到我想要的结果,报了个错给我。接下来就来聊聊这个报错吧

命名空间

主python程序中(包括IDLE shell)的代码与一个名为__main__(前后包含两个下划线)的命名空间关联。将代码放在其单独的模块中时,python会自动创建一个与模块同名的命名空间。(书上原话)

所以不能简单地通过print_lol(cast)调用这个函数,而是需要限定nester.print_lol(cast)

命名空间限定的格式:

模块名.print(要处理的列表)

当使用一个普通的import nester,这会指示Python解释器允许你使用命名空间限定来访问nester函数。如果使用from nester import print_lol,会把指定的函数(这里就是print_lol)增加到当前命名空间来,这样一来,就不用再使用命名空间限定。

不过需要注意的是,如果当前的命名空间中已经定义了一个名为print_lol的函数,这个特定import语句会用导入的函数覆盖你当前命名空间中自己定义的函数。

 注册PYPI网站

首先访问PYPI网站:https://pypi.org/,register一个PYPI ID,然后在注册时提交的email中,点击确认链接确认注册即可。

注册成功后,再经过两个步骤,就可以网PYPI社区上传代码。

步骤一:再次注册PYPI

在nester文件夹下,打开命令行窗口,输入 python setup.py register,然后选择use your existing login。输入用户名和密码

步骤二:向PYPI上传发布

继续在命令行窗口中输入python setup.py sdist upload,确认上传成功后,你的发布已经成为PYPI的一部分了。

认识和学习range()BIF

range()返回一个迭代器,根据需要生成一个指定范围的数字。例如:

所以range(4)是指生成直到4但不包含4的数字。

这个BIF可以满足条件为:在nester打印嵌套列表的基础上,每遇到嵌套列表时,就缩进显示。

修改代码如下所示:

其中print("\t",end="")为打印一个tab制表符。

但是。。。报错了。。。(流泪中...)

有两个问题,一个是回调函数时,参数不对,现在已经有两个参数了

另一个问题是,缩进level一直是个定值,都没有变,遇到内嵌套多个列表时,就不会再继续缩进了。改良版如下:

可以了~完美~发布到PYPI上去之后,问题又来了

原来import nester的那些功能,现在都报错了。。。下一个知识点

使用可选参数

讲一个函数的必要参数变成可选参数,需要为这个参数提供一个缺省值,如果没有提供参考值,就会使用这个缺省值,如果提供了参考值,则会使用这个值而不是缺省值。其实关键在于,参数的缺省值实际上使得这个参数成为可选参数。

为了向函数提供一个缺省值,需要在参数名后面指定这个缺省值。即:

修改为这样level就变成了一个可选的参数。

定义了函数的缺省值之后,就可以采用多种不同的方式调用这个函数:

加参考值的方法:nester.print_lol(list,2)

不加参考值的方法:nester.print_lol(list)

两种方法,都能进行缩进显示。

但是,原来的顶行显示的,不缩进的功能丢失了

要给函数增加第三个参数了。。。命名为indent

这个参数用来控制是否打开缩进的功能。默认不打开缩进,即indent=false,代码如下:

def print_lol(list,indent=False,level=0):
for each_item in list:
if isinstance(each_item,list):
print_lol(each_item,indent,level+1)
else:
if indent:
for level_tab in range(level):
print("\t",end="")
else:
print(each_item)

comics=["夏目","狐妖",["未闻花名","你的名字",["大鱼海棠","虫师"]]]

OK,经过几天的摸索,终于初见雏形,很开心。

今天是剁手节&光棍节,我却在公司完成我的这篇博客,无敌的无聊是多么强大。

祝广大单身狗以及我自己节日快乐    !

原文地址:https://www.cnblogs.com/diaomaoxiaoge/p/9926144.html

时间: 2024-08-01 22:51:56

【Python】[03]函数模块的相关文章

python 发送邮件函数模块

发送邮件函数功能 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import smtplib 4 from email.mime.text import MIMEText 5 from email.utils import formataddr 6 def email(message): 7 msg = MIMEText(message, 'plain', 'utf-8') 8 msg['From'] = formataddr(["大大&q

Python+Selenium进阶版(二)- Python中类/函数/模块的简单介绍

关于Python中类和函数及方法的调用,我们写在这个demo.py文件,具体代码如下: # coding = utf-8 class ClassA(object): string1 = "这是一个字符串." def insteancefunc(self): print('这是一个实例方法.') print(self) @classmethod def classfunc(cls): print('这是一个类方法.') print(cls) @staticmethod def stati

python中string模块各属性以及函数的用法

任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作. python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求: python的字符串属性函数 python的string模块 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 字符串属性函数 系统版本:CentOS release 6.2 (Final)2.6.32

Python中函数和模块的体验与使用

函数基础 目标 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用 函数的使用包含两个步骤: 定义函数 —— 封装 独立的功能 调用函数 —— 享受 封装 的成果 函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的 重用 演练步骤 新建 04_函数 项目 复制之前完成的 乘法表 文件 修改文件,增加函数定义 multiple_

python学习笔记之——函数模块

1.函数参数说明: def login(name,info,passwd = '123456') 函数参数可以有默认值,调用函数时: 1.如果只传二个参数,则有默认值的一定要放到最后: def login(name,passwd = '123456',info='welcome to you') 2.如果传二个参数,一定要指明形参: login(user) login(user,passwd) login(user,info='欢迎') login(user,info='欢迎',passwd='

Head First Python 第二章 函数模块&第三章 文件与异常&第四章 持久存储&第五章 处理数据

第三章 1.共享模块 模块和发布工具箱全世界共享模块 编写函数,以.py为文件后缀名,第三方库都在PyPI *注释代码:三引号(单双都可以) 发布过程P40 使用发布工具,函数模块变成了一个“发布”,可以使用import导入其他程序 2.如果函数模块功能不满意 添加参数以供api选择比添加函数工作量小! 首先考虑BIF内置函数 ----------------------------------------------------------- 第四章 1.文件 open()语句,readlin

python基础11 ---函数模块1

函数模块 一.函数模块的作用(为什么要有函数模块) 1.函数模块可以减少代码量 2.函数模块方便阅读 3.函数模块维护性强二.函数模块的本质以及调用方法 1.函数模块的本质就是一个.py结尾的文件,该文件内写入大量函数 2.必须用import来引用函数模块,在调用函数模块时必须以"模块名.函数名"来调用函数模块中的函数. 3.有的时候我们只需要用到模块中的某个函数,也可以用"from 模块名 improt 函数1,函数2"的方式来引用该模块,但只是一次引用,不建议使

Python 基础学习之: Python math 模块、cmath 模块 区别是 cmath 模块运算的是复数,math 模块运算的是数学运算 Python数学函数列表及解释 Python math 模块提供了许多对浮点数的数学运算函数。 Python cmath 模块包含了一些用于复数运算的函数

Python math 模块.cmath 模块 Python 中数学运算常用的函数基本都在 math 模块.cmath 模块中. Python math 模块提供了许多对浮点数的数学运算函数. Python cmath 模块包含了一些用于复数运算的函数. cmath 模块的函数跟 math 模块函数基本一致,区别是 cmath 模块运算的是复数,math 模块运算的是数学运算. 要使用 math 或 cmath 函数必须先导入: import math 查看 math 查看包中的内容: impo

Python中datetime模块中strftime/strptime函数

python中datetime模块非常好用,提供了日期格式和字符串格式相互转化的函数strftime/strptime 1.由日期格式转化为字符串格式的函数为: datetime.datetime.strftime() 2.由字符串格式转化为日期格式的函数为: datetime.datetime.strptime() 3.两个函数都涉及日期时间的格式化字符串,列举如下: %a 星期几的简写;如 星期三为Web %A 星期几的全称;如 星期三为Wednesday %b 月份的简写; 如4月份为Ap