function 的参数传递 python的变量是一个对象的引用,变量与变量之间的赋值是对同一个对象的引用,当变量重新赋值对象的时候,是将变量指向一个新的对象。
python实参向形参传送数据的方式是值传递。
def change(a,b):
"""
python交换2 个值
"""
a,b=b,a
>>> a,b=2,3
>>> change(a,b)
>>> print("a={} b={}".format(a,b))
a=2 b=3
python可以通过,可变对象修改参数,比如list和dictionary。
def change(lt):
"""
python交换2 个值
"""
lt[0],lt[1]=lt[1],lt[0]
>>> lt
[3, 2]
>>> change(lt)
>>> lt
[2, 3]
可变长度的参数,程序设计中会遇到参数不固定的情况。这时候就需要使用可变长度的函数参数来实现相关功能。python中有2 中可变参数,dict和dictionary
def display_tulp(*tp):
for elem in tp:
print("element={}".format(elem),end=",")
>>> t1=1,2,3
>>> display_tulp(*t1)
element=1,element=2,element=3,
>>> t2=11,22,33,55,66
>>> display_tulp(t2)
element=(11, 22, 33, 55, 66),
其它类型的参数,必须在可变参数之前,如 fun(name,old=66,*sub)
字典可变长的参数 在dictionary中,关键字为参数名,值为相应的参数,其放在函数参数最后以**开头的参数。
def display_dict(**dict):
for item in dict.keys:
print("{}:,{}".format(item,dict[item]))
出现了一点错误
>>> a={1:'a',2:'b'}
>>> display_dict(**a)
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
display_dict(**a)
TypeError: display_dict() keywords must be strings
这个二分查找,递归下标有点小问题。
def find(lt,k,l,r):
count=0
count+=1
mid=(l+r)//2
if lt[mid]==k:
return mid+1
elif lt[mid]>k:
find(lt,k,0,mid-1)
else:
find(lt,k,mid+1,len(lt))
if count>len(lt)+1:
return -1
变量的作用域。
在一个函数体内,或者语句块内定义的变量 称为局部变量。局部变量,自在定义的局部块内有效。
在函数之外定义的变量,称为全局变量,它可以被多个函数引用。
在函数体内,要为全局变量赋值,可以使用global语句,表明变量是全局的。
def display(x,y):
global x
x=68
y=22
print(" no2: x={0},y={1}".format(x,y))
x=11
y=111
匿名函数,使用lambda表达式 lambda [参数1,[参数2,参数3。。。参数n]]:表达式
:冒号前面的是参数,后面表达式,但是在表现形式上只返回一个值。
>>> f=lambda x,y:x+y
>>> f(2,6)
8
模块,可以理解为一个.py的文件。 import name ,导入模块。 导入特定的属性或者库, from 模块名 import name
大约,就是这样,python的 文件,异常,面向对象,图形。 争取5篇文章内,搞得,在水一下,爬虫,科学计算, 不在玩了,我已经 把语法糖拿下来了。 准备转入j2se,j2ee,这是我的主攻。 还有科学技术,作图,spider等,怎么学习,有人,给一个意见没有,感觉这里面函数参数,太多。手上没有好的书籍。