函数

  如果我们要计算一个圆的面积,就需要知道它的半径,然后根据公式S=3.14*r*r算出它的面积,如果我们要算100个圆的面积,则每次我们都需要写公式去计算,是不是很麻烦,但是有了函数的话,我们就不再每次写S=3.14 *r*r, 而是把计算圆面积的功能写到一个函数里比如说s=areacircle(r),然后每次求面积的时候,只要把半径传递给函数就可以实现计算圆面积,这样我 们写代码就简单多了。这就是函数的功能。在编程中,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,能提高应用的模块性,和代码的重 复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

  那么,Python中如何定义函数呢?

  定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

定义一个简单的无参数的函数

>>> def test1():
... print('Hello,World!')
...
>>> test1()
Hello,World!

定义一个有参数的,求和函数

1
2
3
4
5
6
7
def sum(a,b):              #定义函数
    ret=a+b                #函数体
    return ret             #函数返回
 
print(sum(1,2))            #调用函数并打印出结果
  
#如果没有return语句,函数执行完毕后也会返回结果,只是结果为None,函数执行到return就会结束,不再执行函数体内其他代码  

函数的参数

函数有三种不同的参数:

  • 普通参数
  • 默认参数
  • 动态参数

普通参数:

# ######### 定义函数 ######### 

# name 叫做函数func的形式参数,简称:形参
def func(name):
print(name) # ######### 执行函数 #########
# 'xiaoyao' 叫做函数func的实际参数,简称:实参
func('xiaoyao')

默认参数:

>>> def func(name, age = 18):
... print("%s:%s" %(name,age))
...
>>> func('xiaoyao') # 默认参数在不指定的时候,就是默认值
xiaoyao:18
>>> func('xiaoyao',20) # 一旦指定,就不再使用默认值
xiaoyao:20 注:默认参数需要放在参数列表最后,可以有多个默认参数

指定参数:

>>> def func(name, age):
... print("%s:%s" %(name,age))
...
>>> func(age=20,name='xiaoyao') # 可以通过形参名称,不按顺序的传入参数
xiaoyao:20

动态参数:

1.*args

>>> def chao(*args):                  # *args 具有超能力,可以把传入的所有参数都放到一个元组里
... print(args,type(args))
...
>>> chao(1,2,3,4)
(1, 2, 3, 4) <class 'tuple'>
>>> chao(['a','e',45])
(['a', 'e', 45],) <class 'tuple'> >>> chao(*['a','e',45]) #如果传入参数时在前面加“*”,它会将每个元素分别传入,当作元组的一个元素。不加“*”的时候会把整体当作元组的一个元素
('a', 'e', 45) <class 'tuple'>

  

2.**kwargs

>>> def chao2(**kwargs):
... print(kwargs,type(kwargs))
...
>>> chao2(name='xiaoyao') # 将参数当作字典传入,所以必须用指定参数的方式
{'name': 'xiaoyao'} <class 'dict'> >>> dic={'name':'xiaoyao','age':20}
>>> chao2(key1=dic)
{'key1': {'name': 'xiaoyao', 'age': 20}} <class 'dict'>
>>> chao2(**dic) #如果传入参数时在前面加“**”,它会将每个元素分别传入,当作字典的一个键值对。不加“**”的时候会把整体当作字典的一个键值对
{'name': 'xiaoyao', 'age': 20} <class 'dict'>

3.*args,**kwargs(万能参数)

>>> def f1(*args,**kwargs):   # *args,**kwargs 顺序不能变
... print(args)
... print(kwargs)
...
>>> f1(11,22,555,name='xiaoyao',age=20)
(11, 22, 555)
{'name': 'xiaoyao', 'age': 20}
>>> f1(11,22,555,5)
(11, 22, 555, 5)
{}
>>> f1(name='xiaoyao',age=20)
()
{'name': 'xiaoyao', 'age': 20}

循序渐进Python3(三) -- 0 -- 初识函数的更多相关文章

  1. python自动化开发-[第三天]-编码,函数,文件操作

    今日概要 - 编码详解 - 文件操作 - 初识函数 一.字符编码 1.代码执行过程 代码-->解释器翻译-->机器码-->执行 2.ASCII ASCII:一个Bytes代表一个字符 ...

  2. python之路——初识函数

    阅读目录 为什么要用函数 函数的定义与调用 函数的返回值 函数的参数 本章小结 返回顶部 为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你 ...

  3. Python3 matplotlib的绘图函数subplot()简介

    Python3 matplotlib的绘图函数subplot()简介 一.简介 matplotlib下, 一个 Figure 对象可以包含多个子图(Axes), 可以使用 subplot() 快速绘制 ...

  4. Python3 urllib.parse 常用函数示例

    Python3 urllib.parse 常用函数示例 http://blog.51cto.com/walkerqt/1766670  1.获取url参数. >>> from url ...

  5. 孤荷凌寒自学python第三十八天初识python的线程控制

     孤荷凌寒自学python第三十八天初识python的线程控制 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.线程 在操作系统中存在着很多的可执行的应用程序,每个应用程序启动后,就可以看 ...

  6. python3.7 内置函数整理

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 内置函数整理 #abs(x) #返回数字的绝对值. 参数可以是整 ...

  7. python3.7内置函数整理笔记

    #python3.7 内置函数整理 #abs(x) #返回数字的绝对值. 参数可以是整数或浮点数. 如果参数是复数,则返回其大小 # print(abs(1)) # print(abs(-1)) # ...

  8. Python_初识函数

    为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 然后现在有一个需求,让你计算'hello world'的长度,你怎么计算? 这个需求对于现在的你其实不难,我们一起 ...

  9. Python3中的字符串函数学习总结

    这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...

随机推荐

  1. 2015GitWebRTC编译实录13

    2015.07.21 libboringssl.a 编译通过主要是生成路径,去除test文件比较啰嗦,后继测试需要重点跟进下 CC obj/third_party/boringssl/boringss ...

  2. MMDrawerController 的使用

    1.AppDelegate .h 文件:#import "MMDrawerController .h" @property (strong, nonatomic) MMDrawer ...

  3. 手机自适应meta设置

    <meta name="format-detection" content="telephone=no"><meta name="v ...

  4. 关于wcf异常异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut

    异常信息:由于内部错误,服务器无法处理该请求.有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribut ...

  5. postfix启动脚本

    使用该脚本是一定要注意postfix安装路径 #!/bin/bash # # postfix Postfix Mail Transger Agent # # chkconfig: # descript ...

  6. 【原创】Scrum模式也要根据自身特点微调,不能教条

    手上的项目在用Scrum模式开发,运用的是禅道这个国产的平台,运作得还不错,具体如下: 1.整个开发团队有10个人,分为:新功能开发组和系统优化组,每组配备一个技术经理2.人员分在两个办公地点(同一城 ...

  7. UIScroView 3倍的contentSize,左右Scroll时,懒惰加载View

    UIScroView 3倍的contentSize,左右Scroll时,懒惰添加左右的View 用途:分段加载数据 定义枚举: typedefenum { ViewPositionLeft = , V ...

  8. SVD分解的理解[转载]

    http://www.bfcat.com/index.php/2012/03/svd-tutorial/ SVD分解(奇异值分解),本应是本科生就掌握的方法,然而却经常被忽视.实际上,SVD分解不但很 ...

  9. log4net:保存日志到数据库

    1:下载log4net http://logging.apache.org/log4net/download_log4net.cgi 2:引用到项目 下载以后,在项目中引用log4net.dll 3: ...

  10. Notice: Trying to get property of non-object problem(PHP)解决办法 中间件只能跳转不能返任何数据

    这里实际是调用了一个zend的数据库访问的方法,使用了fetchAll方法,但由于数据库中没有该记录,所以返回的对象是null,所以我就判断对象是否为null: 复制代码代码如下: if($obj== ...