前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >函数的参数

函数的参数

作者头像
老七Linux
发布2018-05-31 11:37:09
1.6K0
发布2018-05-31 11:37:09
举报
函数的定义(一):
  • 函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字。
  • 可以通过函数名在程序的不同地方多次执行(这通常叫函数调用)。
为什么使用函数
  • 降低编程难度
    • 通常将一个复杂的大问题分解成一系列的小问题,然后将小问题划分成更小的问题,当问题细化为足够简单时,我们就可以分而治之。各个小问题解决了,大问题就迎刃而解了。
  • 代码重用
    • 避免重复劳作,提供效率
函数的定义和调用
  • def 函数名([参数列表]): ______定义
  • 函数名([参数列表]) ______调用
函数名可以使用
  • 数字+字母+下划线组成;
  • 如果函数名有两个单词组成,第二个单词的首字母需要大写;
  • 但是不可以使用数字开头
综合演练:
In [75]: def fun():
    ...:     print "hello python!!"
    ...:     

In [76]: fun()
hello python!!

例子1:

判断从键盘输入的是数字还是非数字:

def fun():
    sth = raw_input("pls input a number :")
    try:
        if type(int(sth)) == type(1):       ##判断是否为 int 类型
            print "{} is a number.".format(sth)
    except ValueError:      ##如果执行有问题出现异常,就会执行这一句
            print "{} is not a number.".format(sth)
fun()  ##调用

涉及到的知识点:

以下为简单的try….except…else的语法:

try:
<语句>        #运行别的代码
except <名字>:
<语句>        #如果在try部份引发了'name'异常
except <名字>,<数据>:
<语句>        #如果引发了'name'异常,获得附加的数据
else:
<语句>        #如果没有异常发生

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

  • 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
  • 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
  • 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

下面是简单的例子,它打开一个文件,在该文件中的内容写入内容,且并未发生异常:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print "Error: 没有找到文件或读取文件失败"
else:
    print "内容写入文件成功"
    fh.close()

以上程序输出结果:

$ python test.py 
内容写入文件成功
$ cat testfile       # 查看写入的内容
这是一个测试文件,用于测试异常!!

函数的定义(二)

形式参数和实际参数

  • 定义函数时,函数名后面括号中的变量名称叫做“形式参数”,或者称为“形参”
  • 调用函数时,函数名后面括号中的变量名称叫做“实际参数”,或者称为“实参”
综合演练
In [78]: def fun(x ,y):     ## x,y 称为形式参数
    ...:     print x + y
    ...:     

In [79]: fun(3,5)       ##传多个参数或传少都会报错
8

In [81]: fun('asd','12')
asd12

判断输入的实参大小:

In [82]: def aa(x,y):
    ...:     if x > y:
    ...:         print x
    ...:     else:
    ...:         print y
    ...:         

In [83]: aa(3,5)
5

In [84]: aa(8,5)
8

列子2:

import sys

def isNum(n):
    for i in n:
        if i in '0123456789':
            pass
        else:
            print "{} is not a number".format(n)
            sys.exit()
    else:
        print "{} is a number.".format(n)

isNum(sys.argv[1])

扩充:

和shell一样的规则:

print sys.argv[0]:  表示脚本的本身
print sys.argv[1]:  表示脚本的第一个参数
print sys.argv[2]:  表示脚本的第二个参数
...
例子3:
In [85]: import os

In [86]: os.listdir('/proc/') ## 遍历某个目录下的所有文件,并以列表的形式展现
Out[86]: 
['fb',
 'vmstat',
 'cgroups',
 'kpageflags',
 'partitions',
 'timer_list',
 'execdomains',
 'filesystems',
 'sched_debug',
 'timer_stats',
 'vmallocinfo',
 'pagetypeinfo',
 'sysrq-trigger',
 'self',
 '1',
 '2',
 '3',
 '5',
 '7',
 '8',
 '9',
 '10',
 '12',

打印出来linux系统中的pid:

#!/usr/bin/python

import sys
import os

def aa(n):
    for i in n:
        if i in '0123456789':
            pass
        else:
            break
    else:
        print "{}".format(n)

for i in os.listdir('/proc'):
    aa(i)

扩充:

sys.exit() :  意思是:退出整个脚本。
函数的默认参数:
In [88]: def aa(x, y):      ##定义两个形参
    ...:     print x + y
    ...:     

In [89]: aa(3,6)    ##接收两个实参
9

In [90]: def aa(x, y=12):   ##定义两个形参,且赋值其中一个形参
    ...:     print x + y
    ...:     

In [91]: aa(3,6)    ##自定义以后,会按照自定义的参数来
9

In [92]: aa(3)  ##如果只定义一个参数,就会使用其中赋值的形参
15

In [93]: def aa(x=13, y):   ##形参的赋值只能放在最后一位。
    ...:     print x + y
    ...:     
  File "<ipython-input-93-75321c574f96>", line 1
    def aa(x=13, y):
SyntaxError: non-default argument follows default argument

In [94]: def bb(x=7,y=8):
    ...:     print x + y
    ...:     

In [95]: bb()
15

In [96]: bb(22,33)      ##自定义的参数优先
55
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/07/02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数的定义(一):
    • 为什么使用函数
      • 函数的定义和调用
        • 函数名可以使用
          • 综合演练:
          • 函数的定义(二)
            • 综合演练
              • 例子3:
              • 函数的默认参数:
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档