设为首页 收藏本站
查看: 1976|回复: 0

[经验分享] Python基础:Python函数

[复制链接]

尚未签到

发表于 2018-8-5 09:03:42 | 显示全部楼层 |阅读模式
  一、函数是python中使用最高的对象。
  函数定义的简单规则 :
  1、用def定义,接着是函数名和参数和冒号,格式:
  2、函数内部代码块需要缩进
  3、使用return返回函数值,默认返回值是None
  格式:
  def 函数名(参数) :
  代码块
  return                #可有可无,也可以在代码块任意位置使用
  二、函数中return的使用:
  return可以在函数的任何地方使用,直接跳出当前函数,忽略其它代码块。
  # return也可以不带参数,返回的是None
  # 也可以没有return,返回的也是None
  # return也可以返回字典,列表,函数(装饰器就是返回的函数代码块)。
  1、可以跳出if,while,for等语句
def use_return():  
    i = 0
  
    while True:
  
        i += 1
  
        for j in range(i):
  
            print(j, end='')
  

  
            if j == 5:
  
                return j
  

  
        print()
  

  
use_return()
  

  
# 运行结果:i等于5时会直接结束函数
  
"""
  
0
  
01
  
012
  
0123
  
01234
  
012345
  
"""
  上面的函数改变一下调用方式:
print(use_return())            # 最后一行0123455,最后一个5就是返回函数的值,也就是j的值。尝试把最后一个5换行。  2、调用函数:
  使用函数名和括号调用函数。不带括号调用的是函数体,相当于起个别名。
# 使用上面的例子  
# 调用1
  
if use_return() == 5:
  
    print(5)
  

  
# 调用2
  
for i in range(0,use_return()):
  
    print(i)
  
#不能使用,因为use_return()返回的是数字,但不是int型,必须先赋值给变量,然后调用变量
  
v = use_return()
  
for i in range(0,v):
  
    print(i)
  

  
# 调用3
  
s = use_return()
  
print(s)
  

  
# 调用函数体
  
func = use_return
  
print(func)                        # 打印的是use_return函数所在的内存地址
  
func()                             # 运行use_return函数
  三、函数变量与外部变量的关系:
  1、可更改(mutable)与不可更改(immutable)对象
  strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
  2、不可变类型:
  # 变量赋值 a=5 后再赋值 a=10,不是a的值变了,变量相当于指针,只是指针指向变了,5本身没有改变,指向的10是一个新地址,而不是把5变成10.
  # 不可变类型传入函数内,函数修改后,不会影响外部变量值。
  3、可变类型:
  # 变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 ,虽然la指向的内存地址没变,但是内部的值变了,所以是可变的。
  # 可变类型传入函数内的是la的本身,所以,在函数内修改la[2],也改变了函数外的la[2]
def modify_la2(la_value):  
    la_value[2] = 99999
  

  
la = [0, 1, 2, 3, 4, 5]
  
modify_la2(la)
  
print('la = %s' % la)
  
# 运行结果
  
la = [0, 1, 99999, 3, 4, 5]
  4、函数变量寻找由最内层向外层找
def modify_la2():  
    la[2] = 99999
  

  
la = [0, 1, 2, 3, 4, 5]
  
modify_la2()
  
print('la = %s' % la)
  
#modify_la2找不到la,则找函数外面的la,la必须写在调用的modify_la2()前面
  五、函数的参数传递形式:
  1、必需参数:调用函数时,按变量的顺序写对应的值
  2、关键字参数:调用函数时,使用变量名赋值,变量=值
  3、默认参数:定义函数时参数带值,def user(name, age=20): ,age=20就是默认参数
  4、不定长参数:
  # (*args)不定长参数,只能接收必须参数,把参数转换成list存储
  #(**kwargs)不定长参数,只能接收关键字参数,并把参数转换成词典存储
  5、参数存在的顺序:
  必需参数,默认参数,*args, **kwargs
  def modify_la2(name, age=20, *args, **kwargs):
  #age默认参数不起作用,必须被赋值。
def modify_la2(name, age=20, *args, **kwargs):  
    print('name=', name)
  
    print('age=', age)
  
    print('args=', args)
  
    print('kwargs=', kwargs)
  

  
modify_la2('dage', 'men',175, skill='pain', father='Adw')
  
# 运行结果
  
name= dage
  
age= men
  
args= (175,)
  
kwargs= {'father': 'Adw', 'skill': 'pain'}
  六、匿名函数lambda
  lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  格式:
  lambda [arg1 [,arg2,.....argn]]:expression
#梯形面积公式:  
resault = lambda x1, x2, h: (x1 + x2)*h/2
  

  
print(resault(1, 2, 4))
  七、小结:
  函数是完成某一个功能的代码集合。
  函数名和变量名一样,都是指向内存的地址,而指向的内存存储就是函数的代码。
  函数名()则是调用函数返回结果;只有函数名没有括号,调用的是函数本身。
  没有return定义返回,默认返回None。
  把某一功能定义成函数,重复调用减少代码量。
  定义函数也可以达到批量修改的效果,只修改函数,所有调用都发生改变。
  函数是python中使用最高的对象。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-546778-1-1.html 上篇帖子: Python 爬虫 下篇帖子: Python中的strip()的理解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表