码迷,mamicode.com
首页 > 编程语言 > 详细

python学习(10)

时间:2018-09-17 10:23:59      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:变量   出现   实例   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

python学习(10)

标签:变量   出现   实例   return   5.0   print   关联   instance   dom   

原文地址:http://blog.51cto.com/13496943/2175893

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!