# -*- coding:utf-8 -*-

 # 函数
     # python中定义函数的规则如下:以def开头,接函数名称和(),传入的参数和变量放在圆括号中间,函数以:起始,并且缩进,return选择性的返回一个值给调用方,不带返回值的return相当于返回NONE
 print "********************1***********************"
 def printsmt(str):
     print str
     return

 printsmt(")

     # 前面说过可变对象和不可变对象,所以在参数传递时,对于不可变类型,传递的值,而对于参数本身没有影响,所以函数内部的更改不会对其产生影响;但是对于可变类型,则是将参数真正的传递过去,更改后外部的值也会收到影响

     # 传递不可变对象
 print "********************2***********************"
 def changeStr(a):
     a="
     print "Method:",a

 b="
 changeStr(b)  # 输出Method:543s21
 print b # 输出12345

     # 传递可变对象
 print "********************3***********************"
 def changeList(list):
     list.append(["mango"]);
     print "Method:",list
 fruits=['apple','orange','bananas']
 changeList(fruits)
 print fruits

     # 参数:必备参数、关键字参数、默认参数、不定长参数

         # 必备参数:必须以正确的顺序传入,调用数量和声明一致
 print "********************4***********************"
 try:
     changeStr() #这里会直接返回错误 takes exactly 1 argument.
 except Exception as err:
     print(err);

         # 关键字参数:和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值,如:
 print "********************5***********************"
 def  printKey(name,age):
     print name,age

 printKey("zhangsan",18)   # 按传入输出
 printKey(age=19,name='lisi') # 即便输入的顺序不对,但通过调用键字输入,解释器一样可以匹配。

         # 缺省参数 缺省参数的值如果没有传就会被认为默认值。
 print "********************6***********************"
 def printDefault(name,age=35):
     print name,age

 printDefault(age=50,name="lisi") #输出 lisi 50
 printDefault("zhangsan") # 输出 zhangsan 35

         # 不定长参数 有时候传入参数的长度不确定,这时候就会定义不定长参数,如:
 print "********************7***********************"
 def printarg(arg1,*args):
     print arg1
     for arg in args:
         print arg

 printarg(1)
 printarg(1,2,3,4,5)

         # 匿名函数 使用lambda来创建匿名函数,lambda只是一个表达式,函数体比def简单的多
 print "********************8***********************"
 sum=lambda arg1,arg2:arg1+arg2
 print sum(10,20)

         # 全局变量和局部变量,变量存在作用域,定义在函数内部的变量有一个局部作用域,只能在函数内部生效,定义在函数外部的拥有全局作用域。

最新文章

  1. ssh配置git clone简易流程
  2. mvc5+ef6+Bootstrap 项目心得--WebGrid
  3. Oracle中可以nologging执行的操作
  4. 【AngularJS】—— 1 初识AngularJs
  5. java 读取文件路径空格和中文的处理
  6. vsftp 一键安装包
  7. AWS 之 S3篇<.NET(c#)批量上传文件>
  8. JAVA 修改 JSESSIONID
  9. SDL实现按钮
  10. HTML5区域范围文本框实例页面
  11. Python单元测试:unittest使用简介
  12. Asp.net vNext 2
  13. centos gdb安装
  14. Web颜色对照表大全
  15. Linux命令学习总结:ls
  16. fuchsia 内核
  17. POJ2391 Ombrophobic Bovines
  18. OpenNI1.5获取华硕XtionProLive深度图和彩色图并用OpenCV显示
  19. ROS教程5 使用串口
  20. MySQL(八)子查询和分组查询

热门文章

  1. [hihocoder][Offer收割]编程练习赛45
  2. 使用DbVisualizer变量
  3. Charles设置抓取https请求
  4. java网络编程之socket(1)
  5. LINQ(Language Integrated Query)
  6. hust 1570 Lazy. Lazy. Laaaaaaaaaaaazy!
  7. Chernobyl’ Eagle on a Roof(鹰蛋坚固度)
  8. HDU 5279 YJC plays Minecraft (分治NTT优化DP)
  9. 使用Ansible安装部署nginx+php+mysql之安装mysql(3)
  10. Elasticsearch 入门 - Exploring Your Cluster