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
这个二分查找,递归有点小问题。有大佬发现指明一下,我对照了其它人的博客,没有发现,汗啊。这个bug找不到。
def find(lt,k,l,r):
if l<=r:
mid=(l+r)//2
if lt[mid]==k:
return mid+1
else:
if lt[mid]>k:
find(lt,k,l,mid-1)
else:
find(lt,k,mid+1,r)
else:
return -1
变量的作用域。
在一个函数体内,或者语句块内定义的变量 称为局部变量。局部变量,自在定义的局部块内有效。
在函数之外定义的变量,称为全局变量,它可以被多个函数引用。
在函数体内,要为全局变量赋值,可以使用global语句,表明变量是全局的。
def display():
global x
x=68
y=22
print(" no2: x={0},y={1}".format(x,y))
x=11
y=12
print("no1:",x,y)
display()
print("no3:",x,y)
no1: 11 12
no2: x=68,y=22
no3: 68 12
匿名函数,使用lambda表达式
lambda [参数1,[参数2,参数3。。。参数n]]:表达式
:冒号前面的是参数,后面表达式,但是在表现形式上只返回一个值。
>>> f=lambda x,y:x+y
>>> f(2,6)
8
好处,可以不用担心函数名冲突,匿名函数也是一个对象,可以把匿名函数赋给一个变量,在利用变量调用该函数
模块,可以理解为一个.py的文件。 import name ,导入模块。
导入特定的属性或者库, from 模块名 import name
比如: import numpy as np
>>> from math import sqrt
>>> sqrt(4)
2.0
大约,就是这样,python的 文件,异常,面向对象,图形。
争取5篇文章内,搞得,在水一下,爬虫,科学计算,
不在玩了,我已经 把语法糖拿下来了。 准备转入j2se,j2ee,这是我的主攻。
还有科学技术,作图,spider等,怎么学习,有人,给一个意见没有,感觉这里面函数参数,太多。手上没有好的书籍。