Python程序设计基础教程第6章函数_第1页
Python程序设计基础教程第6章函数_第2页
Python程序设计基础教程第6章函数_第3页
Python程序设计基础教程第6章函数_第4页
Python程序设计基础教程第6章函数_第5页
已阅读5页,还剩122页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数与其他语言类似,在Python中,函数的优点也是提高程序的模块性和代码复用性用于实现某种功能的代码块函

数可重复使用函数“用户自定义函数”内建函数Matplotlibprint()财务部NumPy生产中心pandas01先介绍Python中的两种函数02然后介绍参数传递的方法03最后介绍参数的类型CONTENTS目

录函数普通函数匿名函数01先介绍Python中的两种函数02然后介绍参数传递的方法03最后介绍参数的类型CONTENTS目

录普通函数01函数名(必需)02参数列表03变量04代码块(必需)05return普通函数介绍普通函数的基本定义和调用实操基本定义及调用CHAPTER6基本定义及调用def函数名(参数列表):

函数体定义函数基本定义及调用

函数代码块

函数名部分

圆括号内可以定义参数列表

从形式上包含函数名部分和函数体部分以

def

关键词开头,后接函数标识符名称和圆括号

(),以冒号“:”结尾即使参数个数为0,圆括号也必须有;函数形参不需要声明其类型定义函数需要遵循以下规则

基本定义及调用

函数的第一行语句

函数体部分

使用“return[表达式]

”可选择性地使用文档字符串用于存放函数说明函数体部分的内容需要缩进结束函数,选择性地返回一个值给调用方不带表达式的return语句相当于返回None定义函数需要遵循以下规则

基本定义及调用Samplesubtitletextgoeshere函数定义完直接从Python命令提示符执行通过另一个函数调用

就可以被调用了基本定义及调用先定义一个hello()函数>>>defhello():print("HelloPython")>>>hello()HelloPython没有带参数基本定义及调用futurebusiness有一个参数的函数多次调用提高代码复用性基本定义及调用01#i_like.py02#定义带有参数的函数03deflike(language):04'''打印喜欢的编程语言!'''05print("我喜欢{}语言!".format(language))06return07#调用函数08like("C")09like("C#")10like("Python")【例6-1】定义一个带有参数的函数实例如下基本定义及调用结

果我喜欢C语言!我喜欢C#语言!我喜欢Python语言!基本定义及调用使用文档字符串进行函数说明>>>help(like)Helponfunctionlikeinmodule__main__:like(language)打印喜欢的编程语言!内置函数help()基本定义及调用01#sum_seq.py02#定义函数03defsum_seq(a1,a2):04

val=(a1+a2)*(abs(a2-a1)+1)/205

returnval06#调用函数07print(sum_seq(1,9))08print(sum_seq(3,4))09print(sum_seq(2,11))从a1到a2所有整数之和基本定义及调用45.07.065.0点击查看主要介绍文档字符串和函数标注以及return语句的用法文档字符串、函数标注和return语句CHAPTER601文档字符串02函数标注03return语句CONTENTS目

录文档字符串函数的第一行语句“文档字符串”用于存放→函数说明文档字符串如果有多行,则第二行应为空白第1行应为对象目的的简要描述将摘要与其他描述有个视觉上的分隔。后面几行应该是一个或多个段落,描述对象的调用约定、副作用文档字符串有如上一些约定文档字符串用规范的文档字符串可选而非必需为函数增加注释为程序阅读者提供友好的提示和使用说提高函数代码的可读性文档字符串及其约定文档字符串0102函数名.__doc__内置函数help()查看函数的注释文档字符串01#docstr.py02#函数定义03defdocstr_demo(n):04'''函数的简要描述0506函数参数n:传递函数的参数的描述'''【例6-3】在函数中使用文档字符串文档字符串07

return0809#打印函数文档字符串的两种方式10help(docstr_demo)11print("-------------------------------")12print(docstr_demo.__doc__)【例6-3】在函数中使用文档字符串文档字符串Helponfunctiondocstr_demoinmodule__main__:docstr_demo(n)函数的简要描述

函数参数n:传递函数的参数的描述-------------------------------函数的简要描述函数参数n:传递函数的参数的描述【例6-3】上面代码的执行结果如下函数标注都可不用指定类型,但会导致在阅读或函数调用时无法知道参数类型存

放函数标注函数的形参字

典Python函数为形参标注类型。函数标注是关于用户自定义函数中使用类型的元数据信息“

__annotations__

”属性中,并且不会影响函数的其他部分函数标注标注类型位置参数默认参数函数返回值函数标注形参标注的方式在形参后加冒号和数据类型函数返回值类型的标注方式在形参列表和def结尾的冒号之间加“->”和数据类型函数标注`010203函数标注是标注参数或返回值类型并不会限定参数或返回值的类型参数和返回值的类型是可以改变的注

意函数标注01#anno_demo.py02#函数定义03defanno_demo(p1:str,p2:str="ismyfavorite!")->str:04s=p1+""+p205print("函数标注:",anno_demo.__annotations__)06print("传递的参数:",p1,p2)07returns0809#函数调用10print(anno_demo("Python"))【例6-4】函数参数和返回值类型的标注函数标注函数标注:{'p1':<class'str'>,'p2':<class'str'>,'return':<class'str'>}传递的参数:Pythonismyfavorite!Pythonismyfavorite!执行结果return语句用于退出函数返回一个表达式不带表达式的return返回Nonereturn[表达式]return语句01#quotient.py02#求商03defquotient(dividend,divisor):04

if(divisor==0):05

return06

else:07

returndividend/divisor0809#函数调用【例6-5】使用return语句根据条件判断有选择性地返回return语句10#除数不为011a=9912b=313print(a,"/",b,"=",quotient(a,b))1415#除数为016a=9917b=018print(a,"/",b,"=",quotient(a,b))【例6-5】使用return语句根据条件判断有选择性地返回return语句执行结果99/3=33.099/0=None返回None结束没有return语句没执行到return退出点击查看介绍变量作用域的概念和实例变量作用域CHAPTER6变量作用域全局变量

局部变量

“变量的作用域”函数内部定义的变量函数外部定义的变量变量作用域从定义的位置开始变量作用域报

错变量作用域>>>print(x,y)Traceback(mostrecentcalllast):

File"<pyshell#1>",line1,in<module>

print(x,y)NameError:name'x'isnotdefined【例】在解释器环境中使用没有定义的变量报错变量作用域01#func_var1.py02deffunc():03x=104print(x,y)05y=1000607func()【例】在独立代码文件中用没有定义的变量报错变量作用域Traceback(mostrecentcalllast):File"C:/Python38/mycode/chapter05/func_var1.py",line7,in<module>

func()

File"C:/Python38/mycode/chapter05/func_var1.py",line4,infunc

print(x,y)UnboundLocalError:localvariable'y'referencedbeforeassignment【例6-6】上面代码执行后会出现类似如下错误信息变量作用域局部变量作用域仅在函数内运行结束被删除且不可访问变量作用域01#func_var2.py02x,y=2,200#全局变量0304deffunc():05

x,y=1,100#局部变量作用域仅在函数内部06

print("函数内部:x=%d,y=%d"%(x,y))0708print("函数外部:x=%d,y=%d"%(x,y))09func()10print("函数外部:x=%d,y=%d"%(x,y))【例6-7】全局变量与局部变量的作用域示例变量作用域01#func_var2.py02x,y=2,200#全局变量0304deffunc():05

x,y=1,100#局部变量作用域仅在函数内部06

print("函数内部:x=%d,y=%d"%(x,y))0708print("函数外部:x=%d,y=%d"%(x,y))09func()10print("函数外部:x=%d,y=%d"%(x,y))【例6-7】全局变量与局部变量的作用域示例执行结果函数外部:x=2,y=200函数内部:x=1,y=100函数外部:x=2,y=200变量作用域01#func_var2.py02x,y=2,200#全局变量0304deffunc():05x,y=1,100#局部变量作用域仅在函数内部06print("函数内部:x=%d,y=%d"%(x,y))0708print("函数外部:x=%d,y=%d"%(x,y))09func()10print("函数外部:x=%d,y=%d"%(x,y))【例6-7】全局变量与局部变量的作用域示例执行结果函数外部:x=2,y=200函数内部:x=1,y=100函数外部:x=2,y=200

作用域不同值不同

变量作用域在函数内外是一个变量

结果反映到函数外在函数外部没同名创建新的全局变量global定义全局变量存

在

可

访

问变量作用域global定义01#func_var3.py02x,y=2,200#全局变量0304deffunc():05globalx06x,y=1,100#局部变量作用域仅在函数内部07print("函数内部:x=%d,y=%d"%(x,y))0809print("函数外部:x=%d,y=%d"%(x,y))#函数调用前10func()11print("函数外部:x=%d,y=%d"%(x,y))#函数调用后变量作用域global定义01#func_var3.py02x,y=2,200#全局变量0304deffunc():05globalx06x,y=1,100#局部变量作用域仅在函数内部07print("函数内部:x=%d,y=%d"%(x,y))0809print("函数外部:x=%d,y=%d"%(x,y))#函数调用前10func()11print("函数外部:x=%d,y=%d"%(x,y))#函数调用后执行结果函数外部:x=2,y=200函数内部:x=1,y=100函数外部:x=1,y=200变量作用域全局变量y局部变量y“屏蔽”同名的全局变量点击查看介绍函数的递归调用概念和实例函数的递归调用CHAPTER6函数的递归调用

构成递归需要具备以下条件子问题须与原来的问题为同样的问题,但规模较小或更为简单是一种特殊的函数调用形式。函数在定义时直接或间接调用自身的一种方法,目的是将大型复杂的问题转化为一个相似但规模较小的问题递

归调用本身须有出口且有边界条件函数的递归调用

求非负整数的阶乘n!=1×2×3×…×n函数的递归调用【用循环的方式实现】n的阶乘其实是n-1的阶乘与n的乘积,即n!=(n-1)!×n求非负整数的阶乘【递归的方式实现】一般而言,递归会大大减少程序的代码量,让程序更加简洁函数的递归调用01#factorial_loop.py02deffactorial_loop(n):03

'''用循环的方式求非负整数n的阶乘'''04

val=105

ifn==0:06

returnval07

else:08

i=109

whilei<=n:10

val=val*i11

i+=112

returnval1314#调用函数15print(factorial_loop(5))【例6-9】用循环的方式实现非负整数的阶乘函数的递归调用01#factorial_loop.py02deffactorial_loop(n):03

'''用循环的方式求非负整数n的阶乘'''04

val=105

ifn==0:06

returnval07

else:08

i=109

whilei<=n:10

val=val*i11

i+=112

returnval1314#调用函数15print(factorial_loop(5))【例6-9】用循环的方式实现非负整数的阶乘返回结果120函数的递归调用01#factorial_recursion.py02deffactorial_recursion(n):03

'''用递归的方法求非负整数n的阶乘'''04

ifn==0:05

return106

else:07

returnn*factorial_recursion(n-1)0809#调用函数10print(factorial_recursion(5))【例6-10】用递归的方式实现非负整数的阶乘函数的递归调用01#factorial_recursion.py02deffactorial_recursion(n):03

'''用递归的方法求非负整数n的阶乘'''04

ifn==0:05

return106

else:07

returnn*factorial_recursion(n-1)0809#调用函数10print(factorial_recursion(5))【例6-10】用递归的方式实现非负整数的阶乘返回结果120函数的递归调用递归方法定义:F(0)=0,F(1)=1,

F(n)=F(n-1)+F(n-2)(n

≥2,n

∈N*)【求斐波那契数列】函数的递归调用01#fibonacci.py02deffibonacci(n):03

'''求斐波那契数列中第n个元素'''04

fn=005

ifn==1:06

fn=007

elifn==2:08

fn=109

else:10

fn=fibonacci(n-2)+fibonacci(n-1)11

returnfn1213#调用函数14foriinrange(1,10):15

print(fibonacci(i))【例6-11】用递归方法求斐波那契数列中第n个元素函数的递归调用01#fibonacci.py02deffibonacci(n):03

'''求斐波那契数列中第n个元素'''04

fn=005

ifn==1:06

fn=007

elifn==2:08

fn=109

else:10

fn=fibonacci(n-2)+fibonacci(n-1)11

returnfn1213#调用函数14foriinrange(1,10):15

print(fibonacci(i))【例6-11】用递归方法求斐波那契数列中第n个元素1到10进行遍历点击查看Python有一种特殊的函数叫“匿名函数”匿名函数CHAPTER6匿名函数“匿名函数”lambda的方式来简略定义的函数没有使用def语句定义函数的标准方式,lambda表达式只可包含一个表达式,常用于【不想定义函数】但又【需要函数的代码复用功能】的场合匿名函数010203匿名函数特点lambda表达式只包含一个表达式,比def简单,匿名函数更简洁lambda主体是个表达式,而不是一个代码块。只能封装有限的逻辑lambda拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数匿名函数匿名函数名

=

lambda[arg1[,arg2,.....argn]]:expressionarg*

:参数列表expression

:表达式匿名函数定义匿名函数01#variance.py02#计算两个数的平方差0304#以普通函数方式定义05defvariance1(a,b):06returnb**2-a**20708#以匿名函数方式定义09variance2=lambdaa,b:b**2-a**210【例6-12】分别用普通函数和匿名函数求两个数的平方差匿名函数11x,y=4,51213#普通函数调用14print("以普通函数方式定义的函数计算:")15print("{}*{}-{}*{}={}".format(y,y,x,x,variance1(x,y)))1617#匿名函数调用18print("============================")19print("以匿名函数方式定义的函数计算:")20print("{}*{}-{}*{}={}".format(y,y,x,x,variance2(x,y)))【例6-12】分别用普通函数和匿名函数求两个数的平方差匿名函数以普通函数方式定义的函数计算:5*5-4*4=9============================以匿名函数方式定义的函数计算:5*5-4*4=9执行结果匿名函数123不复杂的函数匿名函数与普通函数差别不大一个表达式的函数可选择匿名函数,定义更简洁复杂的函数和不能用一个表达式来完成的任务,使用普通函数是正确的选择点击查看介绍给函数传递不可变对象以及给函数传递可变对象参数传递CHAPTER401给函数传递不可变对象02

给函数传递可变对象03关于参数传递的总结CONTENTS目

录参数传递ABCDE参数参数参数参数参数函数名后括号内参数列表是用逗号分隔开的形参列表,可包含0个或多个参数传递实参参数传递字符串数

字元

组不可变对象对象参数传递可变对象列表字

典参数传递

变量赋值变量的“值”和“类型”也随之发生变化

引号说明变量本身并无类型,也不直接存储值,存储值的内存地址参数传递不可变对象变量的值和存储的地址是否发生变化可变对象变量的值和存储的地址是否发生变化更好地编写函数参数传递01#transfer_immutable.py02#函数定义03deftransfer_immutable(var):04

print("-------------------------函数内部-------------------------")05

print("函数内部赋值前,变量值:",var,"---变量地址:",id(var))06

var+=7707

print("函数内部赋值后,变量值:",var,"---变量地址:",id(var))08

print("-------------------------函数内部-------------------------")09

return(var)1011#函数调用12var_a=1113print("函数外部调用前,变量值:",var_a,"---变量地址:",id(var_a))14transfer_immutable(var_a)15print("函数外部调用后,变量值:",var_a,"---变量地址:",id(var_a))给函数传递不可变对象参数传递函数外部调用前,变量值:11---变量地址:140705103677424-------------------------函数内部-------------------------函数内部赋值前,变量值:11---变量地址:140705103677424函数内部赋值后,变量值:88---变量地址:140705103679888-------------------------函数内部-------------------------函数外部调用后,变量值:11---变量地址:140705103677424【例6-13】给函数传递不可变对象的执行结果参数传递函数外部调用前,变量值:11---变量地址:140705103677424-------------------------函数内部-------------------------函数内部赋值前,变量值:11---变量地址:140705103677424函数内部赋值后,变量值:88---变量地址:140705103679888-------------------------函数内部-------------------------函数外部调用后,变量值:11---变量地址:140705103677424【例6-13】给函数传递不可变对象的执行结果不影响引用参数传递01#transfer_mutable.py02#函数定义03deftransfer_mutable(varlist):04

print("-------------------------函数内部-------------------------")05

print("函数内部赋值前,变量值:",varlist,"---变量地址:",id(varlist))06

varlist+=[4,5,6,7]07

print("函数内部赋值后,变量值:",varlist,"---变量地址:",id(varlist))08

print("-------------------------函数内部-------------------------")09

return(varlist)1011#函数调用12var_a=[1,2,3]13print("函数外部调用前,变量值:",var_a,"---变量地址:",id(var_a))14transfer_mutable(var_a)15print("函数外部调用后,变量值:",var_a,"---变量地址:",id(var_a))给函数传递可变对象参数传递函数外部调用前,变量值:[1,2,3]---变量地址:2353139853056-------------------------函数内部-------------------------函数内部赋值前,变量值:[1,2,3]---变量地址:2353139853056函数内部赋值后,变量值:[1,2,3,4,5,6,7]---变量地址:2353139853056-------------------------函数内部-------------------------函数外部调用后,变量值:[1,2,3,4,5,6,7]---变量地址:2353139853056【例6-14】给函数传递可变对象的执行结果参数传递函数外部调用前,变量值:[1,2,3]---变量地址:2353139853056-------------------------函数内部-------------------------函数内部赋值前,变量值:[1,2,3]---变量地址:2353139853056函数内部赋值后,变量值:[1,2,3,4,5,6,7]---变量地址:2353139853056-------------------------函数内部-------------------------函数外部调用后,变量值:[1,2,3,4,5,6,7]---变量地址:2353139853056【例6-14】给函数传递可变对象的执行结果改变了实参参数传递在fun(a)内部修改a值,则新生成一个a可变对象不可变对象fun(la)是将la真传过去,fun(la)内外部都受影响对函数fun(a)传递的是a的值,不影响a对象本身点击查看Python函数的参数的几种类型和实例参数类型CHAPTER601位置参数02

关键字参数03默认参数CONTENTS目

录04不定长参数05

特殊形式06参数传递的序列解包CONTENTS目

录参数类型

位置参数对于定义的【位置参数】,在函数调用时必须有,且顺序和数量都要保持一致参数类型

位置参数>>>#定义一个函数,其有两个位置参数>>>defrequired_param(p1,p2):print(p1,p2)return>>>

#调用函数,缺少2个参数>>>required_param()Traceback(mostrecentcalllast):File"<pyshell#9>",line1,in<module>required_param()TypeError:required_param()missing2requiredpositionalarguments:'p1'and'p2'>>>#调用函数,缺少1个参数>>>required_param("astring")Traceback(mostrecentcalllast):File"<pyshell#11>",line1,in<module>required_param("astring")TypeError:required_param()missing1requiredpositionalargument:'p2'>>>

#调用函数,提供2个参数>>>required_param("Hello","World")HelloWorld参数类型

关键字参数“关键字参数”在函数调用时,参数的传入使用了参数的名称,则该类参数称为“关键字参数”允许函数参数的顺序与声明不一致因为Python解释器能够用参数名匹配参数值关键字参数必须在位置参数后面在函数调用中,多个关键字参数的顺序可以随意,但关键字参数必须跟随在位置参数的后面参数类型>>>#定义一个函数,有1个位置参数、2个关键字参数>>>defkey_param(p1,kp1,kp2): print(p1,kp1,kp2) return>>>#调用函数>>>key_param("p1",kp2="kp2",kp1="kp1")p1kp1kp2【例】

关键字参数必须跟随在位置参数的后面,实例如下参数类型>>>#定义一个函数,有1个位置参数、2个关键字参数>>>defkey_param(p1,kp1,kp2): print(p1,kp1,kp2) return>>>#调用函数>>>key_param("p1",kp2="kp2",kp1="kp1")p1kp1kp2【例】

关键字参数必须跟随在位置参数的后面,实例如下kp1、kp2关键字参数参数类型>>>#定义一个函数,有1个位置参数、2个关键字参数>>>defkey_param(p1,kp1,kp2): print(p1,kp1,kp2) return>>>#调用函数>>>key_param("p1",kp2="kp2",kp1="kp1")p1kp1kp2【例】

关键字参数必须跟随在位置参数的后面,实例如下p1是位置参数参数类型>>>#定义一个函数,有1个位置参数、2个关键字参数>>>defkey_param(p1,kp1,kp2): print(p1,kp1,kp2) return>>>#调用函数>>>key_param("p1",kp2="kp2",kp1="kp1")p1kp1kp2【例】

关键字参数必须跟随在位置参数的后面,实例如下【

p1必须有,kp1、kp2顺序可随意】参数类型>>>#定义一个函数,有1个位置参数、2个关键字参数>>>defkey_param(p1,kp1,kp2): print(p1,kp1,kp2) return>>>#调用函数>>>key_param(p1="p1",kp2="kp2",kp1="kp1")p1kp1kp2【例】

关键字参数必须跟随在位置参数的后面,实例如下参数类型>>>#定义一个函数,有1个位置参数、2个关键字参数>>>defkey_param(p1,kp1,kp2): print(p1,kp1,kp2) return>>>#调用函数>>>key_param(p1="p1",kp2="kp2",kp1="kp1")p1kp1kp2【例】

关键字参数必须跟随在位置参数的后面,实例如下p1关键字参数参数类型>>>#定义一个函数,有1个位置参数、2个关键字参数>>>defkey_param(p1,kp1,kp2): print(p1,kp1,kp2) return>>>#调用函数>>>key_param(kp2="kp2",p1="p1",kp1="kp1")p1kp1kp2【例】

关键字参数必须跟随在位置参数的后面,实例如下都是关键字参数参数类型

默认参数没传递该参数使用默认值该参数是默认参数则使用默认值参数类型01#param1.py02#定义一个函数03#某社团纳新,会员一般为大一学生04defnew_member(name,student_id,grade="大一"):05print("姓名",name)06print("学号",student_id)07print("年级",grade)08print("---------------------------")09return1011#调用函数12new_member("张三","0001")13new_member("李四","0002","大二")【例6-15】某学生社团纳新的会员管理,在函数定义中使用默认参数参数类型

位置参数执行结果姓名张三学号0001年级大一---------------------------姓名李四学号0002年级大二---------------------------默

认

参

数参数类型>>>gradeone='大一'>>>deffunc(grade=gradeone): print(grade)>>>gradeone='大二'>>>#函数调用>>>func()大一【例】默认参数在函数定义时就计算参数类型>>>gradeone='大一'>>>deffunc(grade=gradeone): print(grade)>>>gradeone='大二'>>>#函数调用>>>func()大一【例】默认参数在函数定义时就计算函数定义就确定的值参数类型

不定长参数如果希望函数参数的个数不确定时,需要用不定长参数不定长参数*parameter和**parameter不定长函数的定义方式前者接收多个实参并放在一个元组中后者是接收键值对并将其放在字典中两种定义方式参数类型

不定长参数deffunctionname([formal_args,]*var_args_tuple):function_suitereturn[expression]两种定义方式的基本语法【方式一】【方式二】deffunctionname([formal_args,]**var_args_dict):function_suitereturn[expression]参数类型01#param2.py02#定义函数03defcal_sum(*a):04

sum=005

foreleina:06

sum+=ele07

returnsum0809#调用函数10print(cal_sum(1,2))11print(cal_sum(1,2,3,4))【例6-16】不定长参数示例-对所有数字参数求和

不定长参数参数类型01#param2.py02#定义函数03defcal_sum(*a):04

sum=005

foreleina:06

sum+=ele07

returnsum0809#调用函数10print(cal_sum(1,2))11print(cal_sum(1,2,3,4))【例6-16】不定长参数示例-对所有数字参数求和

不定长参数310结果参数类型01

#param3.py02

#函数定义03

defuserinfo(**p):04

print(p)05

fork,vinp.items():06

print(k,":",v)0708

#函数调用09

userinfo(name='zhangsan',id='0001',sex='male')10

print("====================================================")11

userinfo(name='lisi',id='0002',sex='female')12

print("====================================================")13

userinfo(name='wangwu',id='0003',sex='female')【例6-17】使用不定长参数,实参传递进函数后被转变为字典类型参数类型{'name':'zhangsan','id':'0001','sex':'male'}na

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论