python学习(10)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习(10)相关的知识,希望对你有一定的参考价值。

习题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)的主要内容,如果未能解决你的问题,请参考以下文章

Python学习总结

Error: Python executable “H:devpython3.10python.EXE“ is v3.10.0, which is not supported by gyp.(代码片段

学习 PyQt5。在我的代码片段中找不到错误 [关闭]

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

python 学习python语法的片段

scrapy主动退出爬虫的代码片段(python3)