标签:变量 出现 实例 return 5.0 print 关联 instance dom
习题4: 写一个函数,这个函数要计算浮点数乘法的一万次相乘后的时间耗时,浮点数可以使用随机小数#coding=utf-8
def func(n):
import time
import random
start = time.time()
for i in range(n):
random.random()*random.random()
print(time.time()-start)
func(10000000)
函数参数:可变类型、不可变类型
不可变对象:所有的数字、字符串、元组
可变:set?dict?list?实例
参数传不可变对象的时候,函数内外变量值是独立的
参数传可变对象的时候,函数内外变量值是关联的
在函数内部使用global,会影响外部变量
示例:
#函数的参数a,只是函数的局部变量,只是和全局变量a=100重名而已
a = 100
def func(a):
a += 1
print(a)
print(func(a)
```)
print(a)
函数调用: 把外部的a传入参数(a = a),由于外部a指向的是不可变对象,所以外部a的值不会改变。
a=[1]
def compute(x):
x.append(2)
print(a)
print(x)
print (compute(a))
函数调用:列表参数a 传入,传入的是[1]的引用(x = a)等于把引用a赋值给了x,对x的改动会影响到a
函数内部访问全部变量global
会改变全局变量的值
a=100
def compute():
global a
a+=1
compute()
print (a)
默认可变参数之坑
#coding=utf-8
def add_end(L=[]):
L.append(‘END‘)
return L
print (add_end([1, 2, 3])) #调用正常
print (add_end([‘x‘, ‘y‘, ‘z‘])) #调用正常
print (add_end())#调用正常
print (add_end())#调用不正常
print (add_end())#调用不正常
出现以上问题原因:
L = []函数的默认值在内存中只有一份
修改为:
#coding=utf-8
def add_end(L=None):
if L is None:
L = []
L.append(‘END‘)
return L
print (add_end([1, 2, 3])) #调用正常
print (add_end([‘x‘, ‘y‘, ‘z‘])) #调用正常
print (add_end())#调用正常
print (add_end())#调用不正常
print (add_end())#调用不正常
练习5:定义函数add(a,b)要求有个值是result来存结果
1 a,b 数字,相加
2 a,b 字符串,就当做字符串相加
3 a,b 如果list就当list相加
#coding=utf-8
import sys
def add(a,b):
if isinstance(a,(int,float)) and isinstance(b,(int,float)):
result = 0.0
elif isinstance(a,str) and isinstance(b,str):
result = ""
elif isinstance(a,list) and isinstance(b,list):
result = []
else:
print("参数错误!")
sys.exit(1)
result = a + b
return result
print(add(4,5))
print(add(4,5.0))
print(add("ab","cd"))
print(add([1,2],[3,4]))
print(add(4,"a"))
多个返回值
函数可以有做个返回值
>>> def add(a,b):
... return a,b
...
>>> x,y = add(1,2)
>>> x
1
>>> y
2
标签:变量 出现 实例 return 5.0 print 关联 instance dom
原文地址:http://blog.51cto.com/13496943/2175893