函数

  如果我们要计算一个圆的面积,就需要知道它的半径,然后根据公式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. 防刷新jq左侧滚动条导航展示

    html代码: <div class="fangchan_navcont">        <div class="fangchan_nav" ...

  2. webservice可以访问但是不能调用方法

        <webServices>               <protocols>                 <add   name="HttpSoa ...

  3. Array函数

    array_flip()例子 , , "c" );$trans = array_flip($trans);print_r($trans);?> 答案: Array ( [1] ...

  4. squid ACL 大全

    Access Controls in Squid Contents Access Controls in Squid The Basics: How the parts fit together AC ...

  5. js 添加广告

    需要调用广告的页面 <script type="text/javascript">    var xzname="巨蟹座";</script& ...

  6. centos-系统语言检查设置安装

    查看当前系统语言 登陆linux系统打开操作终端之后,输入 echo $LANG可以查看当前使用的系统语言. 查看安装的语言包 查看是否有中文语言包可以在终端输入 locale命令,如有zh cn 表 ...

  7. mybatis 使用记录

    首先,贴一个好文.把mybatis中的<if></if>的条件扒到源码分析了一遍.PS:目前还看不懂... http://cheng-xinwei.iteye.com/blog ...

  8. tomcat配置及优化

    jdk安装 su - root mkdir jdk cd jdk wget https://mirror.its.sfu.ca/mirror/CentOS-Third-Party/NSG/common ...

  9. 关于MySql的DBHelper类以及数据分页

    前端: <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix=& ...

  10. Unity3D外包

    北京动点软件长年承接Unity3D(U3D外包)项目,我们制作各类型VR/AR游戏,虚拟现实,增强现实项目! 品质保证,售后完备. 联系请加QQ:372900288  电话:13911652504 我 ...