python如何删除excel中不满足要求的工作簿(excel怎么删除工作表里不需要的)
585
2022-05-29
1.函数概念的复习
形参、实参、return
在交互式环境中定义了函数add后,可以试试这样输入:
>>> type(add)
>>>
2.函数如何定义
3.关于函数的命名
在函数定义时,我们可以调用另一个函数:
def extend():
print('excited!')
plus_one_sec()
如果被调用的函数,之前没有被定义的话,那么执行时会报错:
>>> def extend():
... print('excited!')
... plus_one_sec()
...
>>> extend()
excited!
Traceback (most recent call last):
File "
File "
NameError: name 'plus_one_sec' is not defined
>>>
C++等语言“前向引用声明”——如果我们要调用的函数存在循环引用问题,我们就必须把函数的声明写在最前面。而Python不需要这么做——只要函数定义了,无论先后,都可以使用。
这里如果我们继续在交互式环境中给出函数定义的话(哪怕实际上什么都不做),我们也可以正常运行一开始定义的函数了:
>>> def plus_one_sec():
... pass
...
>>> extend()
excited!
>>>
4.函数的返回值
return可以返回一个或多个变量或对象的值。
def multi_return():
return 1,2,3
x,y,z=multi_return()
print(x)
对于不加参数的return其作用是直接结束正在执行的函数,并离开函数体,返回到调用开始的位置。下面代码只会输出A。
def func():
print("part A")
return
print("part B")
func()
5.函数的对象性
我们需要给函数写文档(方便别人读程序)。格式如下——一般卸载函数名字的下面,主要用于说明函数的用途。
def func():
"""
func() help
"""
pass
定义好文档后,在交互式命令行中,我们可以直接使用 fun._doc_ 查看函数的文档。
函数本身也是python中的对象,而“文档”其实就是函数对象的一个属性。
任何对象都具有属性,函数自然也不例外,我们还可以对已经定义好的函数func,给它增加一个新的属性:
func.attr = 10
print(func.attr) # 输出 10
在python中内置了一个函数dir,可以用来查看一个对象是否具有哪些属性和方法,然后通过查阅Python文档来搜索这些方法的说明。而前面用过的 _doc_ 属性,跟其他的一些对象自带属性一样,使用双下划线开头——这些属性称之为 特殊属性。函数作为对象也是拥有一些自带的特殊方法的。
6.函数参数
def max_pow(a, b):
if a > b:
pow_ab = a ** b
return pow_ab
pow_ba = b ** a
return pow_ba
在函数调用过程中,当我们无法判断函数会有多少个参数时,python提供了一种非常方便的机制:*args参数。
7.函数参数收集
def app(ls,*args):
for item in args:
ls.append(item)
def swap(a,b):
temp=a
a=b
b=temp
ls = []
app(ls, 1, 2)
print(ls)
ls2 = []
app(ls2, 1, 2, 3)
print(ls2)
a=1
b=2
swap(a,b)
print(a,b)
结果如右 *args指后面的变量,这里是将后面的变量都加入到列表中。
8.Python中的引用传参
C/C++没有垃圾回收机制,由程序员自己来管理内存,这既是优点也是缺点。而后面发展的JAVA/C#都通过更高层次的抽象,屏蔽了和内存有关的底层细节,另一方面也牺牲了一些运行效率和程序员的自主权。
值传递时参数是单向传递,而要对主函数定义的实参进行修改时,要用引用传参。
python采用的是一种“传对象引用”的参数传递方式——我们不能自己决定如何传参的。即可认为这是值传递和引用传递的结合体:
(1)对于不可变类型的参数,比如数字、字符或者元组,那么函数传参时采用的就是相当于 值传参——我们不能直接修改原始对象。
(2)对于可变类型的参数,比如列表,字典等,那么传参的凡是就类似于 引用传参,我们可以直接修改原始对象。
def app(ls, *args):
for item in args:
ls.append(item)
ls作为列表,是一个可变参数。在python中交换两个变量的值,不用写一个函数,直接:
a, b = b, a
9.关于Python的参数传递机制
10.函数的递归调用
在一个函数中,我们可以调用另一个函数:
def fun2:
fun1()
def fun1:
pass
递归(直接或间接地调用自身)
调用自身:
def fun1:
fun1()
函数间接的调用自身:(两个函数互相调用,同样构成了递归)
def fun2:
fun1()
def fun1:
pass
递归过程有两个阶段:递推(递推步 和 递归基)和回归。
如求n的阶乘n!【递推步】可以根据定义得到关系式:
n! = n*(n-1)!
同时,【递归基】当n=0时我们可以直接得到已知解:
0! = 1
回归即递推的逆过程——从已知条件出发,注意求值回归,最后达到递推的开始点,结束回归阶段,完成递归调用。
11.关于递归
Python
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。