python基础(二):

菜鸟教程基础知识讲解的非常全面,内容选择我认为的重点输出一遍

函数:

定义一个函数:

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  

  1. def fun(arg):
  2. pass
  3. return arg
  4.  
  5. # 函数调用语法
  6. fun(arg)
  • arg:argument,参数(也叫prarmeter) ,任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • def:define,定义,创建函数 ,函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
  • 代码缩进表示语句块,表明代码从属关系
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

函数的调用:

  将参数传入已经定义好的函数中,便可以调用此函数

  1. def printme( str ):
  2. "打印任何传入的字符串"
  3. print (str)
  4. return
  5.  
  6. # 调用函数
  7. printme("我要调用用户自定义函数!")
  8. printme("再次调用同一函数")
  9.  
  10. 以上实例输出结果:
  11. 我要调用用户自定义函数!
  12. 再次调用同一函数

函数返回值:

  • 所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果

    1. #定义函数
    2. def add2num(a, b):
    3. return a+b
    4.  
    5. #调用函数,顺便保存函数的返回值
    6. result = add2num(100,98)
    7.  
    8. #因为result已经保存了add2num的返回值,所以接下来就可以使用了
    9. print (result) --->198

    函数返回值可以为多个:

    1. def divid(a, b):
    2. ... shang = a//b
    3. ... yushu = a%b
    4. ... return shang, yushu
    5. ...
    6. >>> sh, yu = divid(5, 2)
    7. >>> sh
    8. 5
    9. >>> yu
    10. 1

4种函数的类型:

函数根据有没有参数,有没有返回值,可以相互组合,一共有4种

  • 无参数,无返回值

    •   

      1. # 函数定义,初级
      2. def numsum():
      3. a = 5
      4. b = 10
      5. c = a + b
      6. print(c)
      7.  
      8. # 函数执行
      9. numsum() --->15
  • 无参数,有返回值

  • 有参数,无返回值

  • 有参数,有返回值

    • 输入参数:

      • 形参:形式参数,声明函数时,括号()中的参数
      • 实参:实际参数,调用函数是,括号()中的参数
      • 实参将值传给形参,本质上是变量赋值
      • 返回值:return
        • 会终止函数执行(return是函数的最后一句),并返回一个值给调用方
        • 不带表达式的return返回None
        • Print()不是返回值,只是输出信息到界面
          1. # 函数定义,带输入输出
          2. def numsum2(a, b):
          3. c = a + b
          4. return c
          5.  
          6. # 函数调用
          7. d = numsum2(10, 20)
          8. print(d) --->30

函数中参数的类别:

  • 必需参数

    •   

      1. #可写函数说明
      2. def printme( str ):
      3. "打印任何传入的字符串"
      4. print (str)
      5. return
      6.  
      7. #调用printme函数
      8. printme()
  • 关键字参数
    •   

      1. def about(name,course,site):
      2. print (name,course,site)
      3.  
      4. about(site='www.baidu.com',name='green',course=100) ##以关健字方式传入参数(可以不按顺序)
  • 默认参数
    •   

      1. def about(name,course,site):
      2. print (name,course,site)
      3.  
      4. about('jim','','www.baidu.com') ## 必须按顺序传参
  • 不定长参数
    •   

      • 非关键字可变参数(元组)

        • 放在默认值参数后面
        • 可将传入的不确定数量的默认参数聚合为元组方便函数使用
          1. def fun(a, b, *args):
          2. print(a)
          3. print(b)
          4. print(args)
          5. print("="*30)
          6. ret = a + b
          7. for i in args: #便利args中的元素
          8. ret += i
          9. return ret
          10.  
          11. print(fun(1,2,3,4))
          12.  
          13. 结果:
          14. 1
          15. 2
          16. (3, 4)
          17. ==============================
          18. 10
      • 关键字可变参数(字典)
        • 放在非关键字可变参数后面
        • 可将传入的不确定数量的默认值参数聚合为字典方便函数使用
          1. def fun(a, b, *args, **kwargs):
          2. print(a)
          3. print(b)
          4. print(args)
          5. print(kwargs)
          6.  
          7. fun(1, 2, 3, 4, name = "hello", age = 20)
          8.  
          9. 结果:
          10. 1
          11. 2
          12. (3, 4)
          13. {'name': 'hello', 'age': 20}
  1. 尽量避免多种参数格式混合(主要是两种可变参数)
  2. 多参数混合时注意顺序:
  3. 一般顺序是:默认参数,默认值参数,非关键字可变参数,关键字可变参数
  4. 注意:带关键字的参数必须放在最后

匿名函数:

  • 语义上讲,lambda 只是普通函数定义中的一个语法技巧,书写代码更简洁(但不易懂)
  • lambda 是一个表达式(非代码块),比 def 简单,仅能封装有限的逻辑如if else分支,不能使用多项分支和循环,不适合复杂操作
  1. # 普通函数
  2. def def_sum(a, b):
  3. return a + b
  4.  
  5. def_sum(5, 10)
  6.  
  7. # 匿名函数:变量名 = lambda 参数... : 表达式计算
  8. lambda_sum = lambda a, b: a + b
  9. lambda_sum(5, 10)
  10. --->15
  1. 分支匿名函数
  2.  
  3. # 普通函数
  4. def def_gender(g):
  5. if g == 1:
  6. return '男性'
  7. else:
  8. return '女性'
  9.  
  10. def_gender(0)
  11.  
  12. # 匿名函数:变量名 = lambda 参数... : 分支1的值 if 判断条件 else 分支2的值
  13. lambda_gender = lambda a: '男性' if a == 1 else '女性'
  14. lambda_gender(1)
  15. --->男性
  1. # 普通函数
  2. def absum(a, b):
  3. return a + b
  4.  
  5. def def_sum2(a, b, c):
  6. return absum(a, b) + c
  7.  
  8. def_sum2(1,2,3)
  9.  
  10. # 匿名函数:变量名 = lambda 参数... : 其他函数组成的表达式
  11. def absum(a, b):
  12. return a + b
  13.  
  14. lambda_sum = lambda x, y, z: absum(x, y) + z
  15. lambda_sum(1,2,3)
  16.  
  17. --->6

匿名函数练习题:

  1. 将列表内的字典按照年龄进行排序:
    infors = [{'name':'laowang','age':23},{'name':'ab','age':34},{'name':'bf','age':43}]
  1.  

初识python 函数(定义,传参,返回值)的更多相关文章

  1. Python函数之传参

    目录 1. 函数传参 1.1 参数的作用 1.2 形参和实参 1.3 位置参数 1.4 关键字参数 1.5 默认实参 1.6 参数总结 2. 可变参数 1. 函数传参 1.1 参数的作用 1.2 形参 ...

  2. python函数的传参模式

    python里的变量更像是一个名字.标签.而Python中一切又皆为对象. 当函数传参时,函数参数作为一个标签,指向某个对象,因此更贴切的说是"call by object". 但 ...

  3. python函数的使用和返回值

    #coding=utf-8 def a(): i=1a() #函数的返回值,用return语句实现 #一个返回值的情况def test(): i=7 return iprint test() #多个返 ...

  4. python 全栈开发,Day9(函数的初始,返回值,传参,三元运算)

    一.函数的初始 比如python没有len()方法,如何求字符串的长度使用for循环 s = 'fdshfeigjoglfkldsja' count = 0 for i in s: count += ...

  5. python 全栈开发,Day9(函数的初始,返回值,传参,三元运算)

    一.函数的初始 比如python没有len()方法,如果求字符串的长度 使用for循环 s = 'asdfadsf' count = 0 for i in s: count += 1 print(co ...

  6. 9 - Python函数定义-位置参数-返回值

    目录 1 函数介绍 1.1 为什么要使用函数 1.2 Python中的函数 2 函数的基本使用 3 函数的参数 3.1 参数的默认值 3.2 可变参数 3.2.1 可变位置传参 3.2.2 可变关键字 ...

  7. Python之函数(一)定义函数以及传参

    定义函数以及传参 函数的定义 def 函数名(): 函数体 例子: def func():#def关键字--定义 func函数名--和变量定义规则一样 ()必须要写格式 :声明 语句结束 s=[1,2 ...

  8. Python全栈工程师(函数的传参)

     ParisGabriel   感谢 大家的支持                                                               每天坚持 一天一篇 点个订 ...

  9. day11 python学习 函数的建立,返回值,参数

    函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算,如:发送邮件.计算出 [11,22,38,888,2]中的最大数等 ...

随机推荐

  1. PHP程序员应当如何保持与时俱进?

    记得之前在某个论坛上看到别人说php程序员土,作为一名php程序员内心当然是不乐意的.不过别人这么说也不是完全没有道理,其实他说php程序员土应该指的就是php程序员不懂得与时俱进. 当然,这也不全是 ...

  2. Orchard Core 文档翻译 (六)HTML

    Body (OrchardCore.Html) Theming Shapes 将HtmlBodyPart附加到内容类型时,将呈现以下形状(Shapes) Name Display Type Defau ...

  3. Spring3+Struts2+Hibernate4+Mybatis整合的一个maven例子

    说明: 1.用了maven去搞这个demo,懒得去导jar包... 2.这个demo用了spring去做Ioc,事务的aop:用了struts2去做“MVC”(没有用到任何UI技术,有点对不起这个MV ...

  4. 【转】android ListView详解

    由于google doc 很多人都打不开,故更新了源码下载地址 [源码下载]----2011-01-18 在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根 ...

  5. 清除IE地址栏中的历史网址

    实现效果: 知识运用: RegistryKey类的GetValueNames和DeleteValue方法 实现代码: private void button1_Click(object sender, ...

  6. HashMap对HashCode碰撞的处理

    先说Java之外的,什么是拉链法?怎么解决冲突的: 拉链法解决冲突的做法是:将所有关键字为同义词的结点链接在同一个单链表中. 若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数组t ...

  7. 使用pako.js实现gzip的压缩和解压

    poko.js可至Github下载:https://github.com/nodeca/pako 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  8. android 学习笔记 杂记1

    getIntent().getExtras().get("intent"); 这个intent是数据包装的参数. 比如: Intent intent = new Intent(th ...

  9. Python学习之路——文件操作

    文件操作分三步:打开文件,读写文件,关闭文件.读取操作时没有给read函数加括号,会出现下面这样的车祸 >>> data = open('/home/supersun/Documen ...

  10. 涉及JSP、Servlet的页面编码问题

    1. JSP页面中,二处的字符编码有何区别 1.<%@ page contentType="text/html;charset=UTF-8" %> 是服务器端java程 ...