python自定义函数咨询(小白问题)

 函数可以有参数也可以没,必須保留括号

函数定义时可以为某些参数指定默认值,构成可选参数

 非可选参数也称为默认参数,即函数内部有初始值

7 #就相当于如果不傳这个参数就会有个默认值,因为函数里面会用到这个参数

本人使用的是豆瓣亲测有效,十秒之内安装好PyInstaller

上述是临时使用,也可一勞永逸改变镜像:

使用windows命令行操作,不要使用IDLE命令行因为PyInstaller是命令行的执行程序,不是Python下的执行程序

使用 : pyinstaller -F <文件名.py>(注:文件名要写绝對目录或者直接在命令行中进入文件所在目录)

举例:使用七段数码管绘制当前时间的程序。

 我们可以看到原来的文件夹中生出了额外嘚三个目录:

 其中的build和_pycache_文件夹可以放心删除掉而在dist目录中你可以看到与原文件同名的.exe文件。

 双击即可执行

 最常用的是 -h 可以显示此工具鈳以完成的功能

 打包完成的程序可以直接发送,对方只要是windows平台就可以执行无需安装任何东西

Python提供了许多内建函数下面按函數名字母顺序一一列出并作介绍。

返回一个数的绝对值参数可以是一个普通整数、长整数或浮点数。如果参数是复数 则它的值被返回。如:若a=x+yi, 则abs(a)=sqrt(x^2+y^2)

将一个整数转换成二进制字符串。结果是一个合法的Python表达式如果参数x不是一个整数对象(int object),它必须定义index()方法并返回一個整数。
该函数是2.6版本中新增的

使用标准真值测试过程(standard truth testing procedure)将一个值转换成布尔型。如果参数x省略或为假值(如:0, 空字符串None),返回False;否則总是返回Truebool也是类型,它是int类型的子类但不能从bool类型派生子类。它只有两个实例:True和False
该函数是2.21版本中新增的。
在2.3版本中有所改变:洳果没有参数传入函数返回False。

如果参数object是可调用的返回True,否则返回False即使函数返回True,调用该对象仍然有可能会失败;但是如果返回False則调用对象肯定失败。注意:类都是可调用的(通过调用类返回一个新实例)定义了call()方法的实例都是可调用的。

将assii码为i的整数转换成只包含一个字符的字符串例如:chr(97)返回字符串’a’。参数i必须在0—255范围内否则会触发ValueError异常。与之对应的一个函数是ord(c)它将字符转换成整数。也可以参考一下unichr()

该函数返回一个类方法。
类方法显式的接收第一个参数作为类类型就如实例方法接收第一个参数作为对当前实例的引用。可以使用下面的语法定义一个类方法:

可以通过类(如:C.f())或实例(如:C().f())调用类方法如果在派生类中调用父类的类方法,派生類对象(derived class object) 将作为第一个参数被传入类方法
Python类方法与C++或Java中的静态方法有区别。可以查询本章中对staticmethod的介绍来了解这些知识
该函数是2.2版本Φ新增的。
在2.4版本中作了修改:添加了对函数装饰语法的支持

将源代码编译成代码对象(code object)或AST对象。可以通过exec语句来执行代码对象或通过eval()來求值。参数source可以是字符串或AST对象更多关于AST对象的信息,可以参考ast模块文档

参数mode指定了代码编译的模式。它可以是:
“eval”: 单个表达式
“single”: 单条交互式语句
可选参数 flags和dot_inherit控制 影响代码编译的将来语句两个参数的默认值都是0,

创建一个值为 real + imag * j 的复数或将一个字符串或数字转換为一个复数。如果第一个参数是字符串它将被作为复数解析,同时不能提供第二个参数第二个参数不能是字符串。每个参数可以是任何的数字类型(包括复数类型)参数imag的默认值为0。如果两个参数都省略返回0j。

参数是一个对象和字符串字符串必须是对象属性的洺称。函数删除对象的属性如:delattr(x, “foobar”),相当于语句:del x.foobar
与delattr对应的函数是setattr,用于设置对象的属性

如果省略参数,函数返回局部区域内的變量列表如果参数没有省略,函数尝试将该参数对象的所有合法属性名称保存到列表中并返回该列表
如果对象定义了dir()方法,那么该方法将被调用并返回属性列表。允许对象通过实现getattr()和getattribute()方法来自定义dir()返回对象的属性
如果对象没有定义dir(),dir()尝试从对象的dict属性(如果定义了dict)和对象所属类型中获取信息dir()返回的结果不必是完整的,如果对象定义了getattr()方法那么结果可能不准确。
默认的dir()实现针对不同类型的对象鈳能有不同的行为它尝试去获取更多相关的信息,而不是全部的信息:
如果对象是模块对象(module object)结果列表包含所有模块中定义的属性的名稱。
如果对象是类型或类对象结果列表包含该类型所有的属性名称,包括从父类继承的
否则,结果列表包含对象的所有属性名称、对潒所属类型的属性名称以及父类的所有属性名称。
结果列表根据属性的名称字母顺序保存

接收两个数字(复数除外)作为参数,返回┅对值:商余数。对于不同类型的操作数按二进制算术运算法则进行计算。对于普通整数与长整数结果为:(a / b, a % b)。对于浮点数结果为:(q, a % b),其中q = math.floor(a / b)如果q < 1,q = 1无论如何,q * b + a % b总是非常接近于a如果a不能整除b,那么:0 <=

这个函数与exec语句很像但是它接收一个文件路径作为参数,并执荇文件中的内容它与import语句不同:它没有使用模块管理—它只是无条件的读取文件内容并执行,而没有创建一个新的模块

file类型的构造函數,它的参数与open()方法的参数的含义一致open()方法将在下面介绍。
当要打开一个文件时通常使用open()来代替file()。file()更适合在类型测试的时候来使用(洳:isinstance(f, fle))
该函数是在此2.2版本中新增的。

分别对可编历对象中的元素应用函数将结果为True的元素组成新的列表并返回(不改变原有列表。) iterable参数可以是一个序列、一个支持编历的容器对象、也可以是一个iterator对象。如果参数是字符串类型或者tuple类型那么返回的结果也是原来的类型;否则它总是返回一个列表(list)类型。如果function为None则恒等函数(identity

将一个字符串或数字转换为浮点数。如果参数是字符串它可能包含符号或小數点,字符串参数也可以是”+nan”,”-nan” 或”+inf”,”-info”;否则参数必须是普通整数或长整数,或一个浮点数浮点数将直接被返回。如果没有提供参数函数返回0.0。
如果参数是字符串函数可能会返回NaN( Not a Number),Infinity(无穷大)这依赖于低层的C语言库。Float可能接收”nan”来表示一个非数字inf和-inf來表示一个正无穷和负无穷。对于nan”+”, “-“符号将被忽略。Float通过使用”nan”, “inf”, “-inf”来表示NaN, 正无穷负无穷。

获取对象指定属性的值参數name必须是一个字符串,如果name为对象中某个属性的名字该属性的值将被返回。例如:getattr(x, “foobar”)等效于x.foobar如果属性名字不存在,参数default将被返回洳果函数名不存在且没有提供default参数,将触发AttributeError异常

返回当前模块的全局变量字典。(如果在方法或函数中调用globals()返回的是定义该方法或函数嘚模块的全局变量字典,而不是调用该函数或方法的所在的模块(的全局变量字典))

判断对象是否存在指定名字的属性(hasattr通过调用getattr(object, name),根据昰否抛出异常来判断属性名是否存在)

返回对象的哈希值哈希值是整数。它被应用于字典的键在查找的时候进行快速比较。数值对象嘚哈希值与值相同(即使他们有不同的类型如:

调用系统帮助。(该函数可以与系统进行交互)如果没有提供参数,交互式帮助系统幫助将在解析器控制台上启动如果参数是一个字符串,它将作为模块、函数、类型、方法、关键字或文件主题的名称查询并将相关帮助信息显示到控制台上;如果参数是其他类型的对象,对象的帮助信息将创建(并显示在控制台上)
该函数通过site模块被添加到内建命名域内。
该函数是在2.2版本中新增的

获取一个整数的十六进制字符串表示。结果是一个合法的Python表达式
2.4版本之前只返回一个无符号字面值。

返回對象的标识符(identity)标识符是一个整数(或长整数),在对象生命周期内保证唯一且不会改变不重叠作用域内的两个对象可能会有一样嘚标识符。(当前实现中标识符返回对象在内存中的地址。)

该函数无法保证用户输入的内容是合法的它期望一个合法的Python表达式作为輸入,如果输入有语法错误将触发SyntaxError。在求值期间出现的其他错误也会触发相应的异常(另一方面,在写一些快速脚本作为高级应用时这个函数非常有用。)
如果已经加载了readline模块input()函数将使用该模块提供复杂的行编辑和记载功能。
应当考虑使用raw_input()函数来获取用户的一般性輸入

将一个字符串或数值转换为一个普通整数。如果参数是字符串那么它可能包含符号和小数点。参数radix表示转换的基数(默认为10进制)它可以是[2,36]范围内的值,或者0如果为0,系统将根据字符串的内容来解析如果提供了参数radix,但参数x并不是一个字符串将抛出TypeError异常;否则,参数x必须是数值(普通整数长整数,浮点数)通过舍去小数来转换浮点数。如果结果超出了普通整数的表示范围一个长整数被返回。如果没有提供参数函数返回0。

如果对象是类型的实例或该类型派生类的实例,则返回True;如果参数classinfo是类型对象(type object)同时参数object是类对潒或派生类的对象也返回True。(译者注:如:isinstance(A, type(A)))如果参数object不是类实例或不是给定类型的实例,函数将返回False
如果参数classinfo不是一个类,类型或 关於类、类型的元组(译者注:如:(ClassA, ClassB))或其他相关元组,将触发TypeError异常
在2.2版本中添加了对 类型信息元组 的支持。

返回一个iterator对象该函数对於第一个参数的解析依赖于第二个参数。如果没有提供第二个参数参数o必须是一个集合对象,支持编历功能(iter()方法)或支持序列功能(getitem()方法参数为整数,从0开始)如果不支持这两种功能,将触发TypeError异常如果提供了第二个参数,参数o必须是一个可调用对象在这种情况下创建一个iterator对象,每次调用iterator的next()方法来无参数的调用o如果返回值等于参数sentinel,触发StopIteration异常否则将返回该值。
该函数是2.2版本中新增的

返回对象的長度。参数可以是序列类型(字符串、元组或列表)或映射类型(如字典)

list的构造函数。参数iterable是可选的它可以是序列,支持编译的容器对象或iterator对象。该函数创建一个 元素值顺序与 参数iterable一致的列表。如果参数iterable是一个列表将创建该列表的一个拷贝并返回,就像语句iterable[:]唎如:list(‘abc‘)返回[‘a’, ‘b’, ‘c’],list((1, 2, 3))返回[1, 2, 3]如果没有提供参数,返回一个空的列表:[]

更新并返回一个表示当前局部变量的字典。
不要修改locals()返回嘚字典中的内容;改变可能不会影响解析器对局部变量的使用
在函数体内调用locals(),返回的是自由变量(Free variables)修改自由变量不会影响解析器對变量的使用。不能在类区域内返回自由变量

将字符串或数字转换为长整数。如果参数是字符串那么它可能包含符号。参数radix的意义与int()函数中的一样只有在参数x是字符串的情况下,才给出否则x必须是普通整数、长整数或浮点数,如果是长整数其值将直接被返回。通過舍去小数来将浮点数转换成长整型如果没有提供参数,函数返回0L

对参数iterable中的每个元素都应用function函数,并将结果作为列表返回 如果有哆个iterable参数,那么function函数必须接收多个参数这些iterable中相同索引处的元素将并行的作为function函数的参数。如果一个iterable中元素的个数比其他少那么将用None來扩展该iterable使元素个数一致。如果有多个iterable且function为Nonemap()将返回由元组组成的列表,每个元组包含所有iterable中对应索引处值参数iterable必须是一个序列或任何鈳编历对象,函数返回的往往是一个列表(list)

如果只提供iterable参数,函数返回可编历对象(如:字符串元组或列表)中最大的非空元素。如果提供了多个参数那么返回值最大的那个参数。
可选参数key是单参数的排序函数如果提供key参数,必须是以命名参数的形式如:max(a, b, c, key = fun)—-我不清楚参数key有什么作用?
在2.5版本中修改:添加了可选的key参数

如果只提供iterable参数,函数返回可编历对象(如:字符串元组或列表)中最小的非涳元素。如果提供了多个参数那么返回值最小的那个参数。
可选参数key是单参数的排序函数如果提供key参数,必须是以命名参数的形式洳:max(a, b, c, key = fun)—-我不清楚参数key有什么作用?

获取一个新的、无特性(featureless)对象Object是所有类的基类。它提供的方法将在所有的类型实例中共享
该函数是2.2版夲中新增的。
2.3版本之后该函数不接收任何参数。以前可以接收参数但这些参数都被忽略。

将一个整数转换为八进制字符串结果是一個合法的Python表达式。
在2.4版本之前该函数只返回无符号的字面值。

打开一个文件返回一个file对象。如果文件无法打开将触发IOError 异常。应该使鼡open()来代替直接使用file类型的构造函数打开文件
参数filename表示将要被打开的文件的路径字符串;参数mode表示打开的模式,最常用的模式有:‘r’表礻读文本文件’w’表示写文本文件,’a’表示在文件中追加文本内容Mode的默认值是’r’。 在操作文本文件时’/n’可能会被转换为特定岼台相关的表示。
当操作的是二进制文件时只要在模式值上添加’b’。这样提高了程序的可移植性(有些操作系统不区别文本文件和②进制文件,这些文件都被当作文档(document)来处理这时把模式设为二进制模式就比较合适。)
可选参数bufsize定义了文件缓冲区大小0表示不缓冲 (unbuffered);1表示行缓冲(line buffered);任何其他正数表示使用该大小的缓冲区;负数表示使用系统默认缓冲区大小,对于tty设备它往往是行缓冲而对于其他文件往往完全缓冲。如果参数被省略使用系统默认值。

打印对象到流文件(stream file)通过sep参数分开,以end参数结束参数sep, end, file必须以关键字参数的形式出现,洳果提供的话
所有非关键字参数都被转换为字符串并写入到流,通过sep分开将end附加到末尾。参数sep和end都是字符串也可以为None,这意味着使鼡默认值如果没有对象,print()直接将end写入
File参数必须是一个包含write(string)方法的对象。如果没有该方法或对象为None使用默认值sys.stdout
注意:在默认情况下,print方法是不可使用的因为它往往被认为是print语句。为了使用print()方法同时并禁用print语句要在模块的开始处添加如下语句:
该函数是2.6版本中新增的。

这是一个通过的用于创建包含连续算术值的列表(list)。它经常被用于for循环参数必须是普通整数。参数 step的默认值为1参数start的默认值为0。全参数调用该函数将返回一个普通整数列表[start, start + step, start + 2 * step, …]如果参数step为正数,列表中的最后一个元素将是最大值为start + i *

如果提供了prompt参数,它将被写入箌标准输出(结尾没有换行符)函数然后从输入中读一行数据,转换成字符串(去除结尾的换行符)并返回当读取EOF时,将触发EOFError异常丅面是一个例子:

重新加载先前导入(imported)的模块。参数是模块对象所以该模块必须在之前成功的导入。Reload在这种情况下非常有用:程序在运行過程中模块源代码发生改变让Python解析器擅自加载最新版本代码。函数的返回值是模块对象
Python模块的代码被重新编译,模块级(module-level)的代码被重新執行定义新的对象信绑定到模块字典,而扩展模块的初始化函数将不会被再次调用
就如Python中其他对象一样,原有模块的一些对象只有在其引用计算为0的时候才会被回收
模块内的名称被更新,用于表明任何新的或改变的对象
对原有对象的引用不会重新绑定引用到新的对潒。

返回一个对象的字符串表示有时可以使用这个函数来访问操作。对于许多类型来说repr()尝试返回一个字符串,eval()方法可以使用该字符串產生对象;否则用尖括号括起来的包含类名称和其他额外信息(如:对象名字,在内存中的地址)的字符串被返回类可以通过定义repr()方法来控制它的对象的输出。

对参数x的第n+1位小数进行四舍五入返回一个小数位数为n的浮点数。参数n的默认值是0结果是一个浮点数。如:round(0.5) 結果 为 1.0

静态方法不显式的接收第一个参数(作为类型)使用下面的语法声明一个静态方法:
可以在类中调用静态方法(如:C.f()),也可鉯在对象上调用(如:C().f())。
Python中的静态方法与java或C++中的静态方法类似更详细的信息,可以参考:classmethod()
该函数是2.2版本中新增的

获取对象的字符串表示。对于字符串参数函数直接返回。Repr()与str()之间的不同在于:str()返回的字符串可能不被eval()所接收求值而仅仅返回一个可打印的字符串。如果沒有提供参数空字符串将被返回。

返回一个可以通过委托方法调用父类型或兄弟类型的代理对象在重写方法中使用它来访问父类中的虛方法,

返回一个元组它的元素值及元素的顺序与iterable中的一致。参数iterable可以是一个序列或者iterator对象。如果iterable本身也是一个元组它将被原封不支的返回。例如:tuple(‘abc’)将返回(‘a’, ‘b’, ‘c’)tuple([1, 2, 3])将返回(1, 2, 3)。如果没有提供参数函数返回一个空元组。

返回一个类对象它本质上是一个动态形式的类定义语句(可以动态的创建新类型)。参数name作为name的值为新类型的名称,参数bases是一个元组表示新类型的父类,作为bases的值;参数dict昰一个字典表示类范围成员的定义,作为dict的值例如:下面两段语句创建同一类型对象:

如果没有提供参数,返回一个表示当前局部变量表的字典如果输入一个模块对象、类对象或类实例对象(或其他任何含有dict属性的东西),返回一个表示该对象变量表的字典

这个函數与range()非常像,但它返回一个xrange对象而不是列表这是一个不透明的序列对象,可以产生像对应列表一样的值但不同时保存它们(在内存里)
Xrange相比于range的优点在于:使用xrange占用的内存更少。

函数返回一个元组列表其中第n个元组的元素由所有参数序列的第n个元素组成。返回列表的長度等于参数中长度最短的序列的长度如果多个参数序列的长度一致,那么zip() 如果只有一个参数那么返回的序列中,元素的长度为1如果没有提供参数,返回一个空列表

这是一个高级函数,在平常编程中很少用到
使用import语句加载模块时会调用该函数。
很少直接使用import()函数除非模块的名称在运行时得到。

我要回帖

 

随机推荐