九、函数

函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字。

降低编程难度

代码重用

可以通过函数名在程序的不同地方多长执行,这通常叫函数调用(。)。

预定义函数

可以直接使用

自定义函数

用户自己编写

函数的定义和调用

-def函数名([参数列表])://定义

-函数名([参数名]) //调用

函数调用

#!/usr/bin/python

def fun():

    sth = raw_input("Please input something: ")

try:                                    

 #捕捉异常,如果有异常跳过执行 except处理

        if type(int(sth)) == type(1):

            print "%s is a number" %sth

    except:

        print "%s is not number" %sth

 fun()

函数参数

形式参数和实际参数

在定义函数是,函数名后面括号中的变量名称叫做”形式参数”,或形参

在调用函数时,函数名后面括号中的变量名称叫做”实际参数”,称为实参

#函数命名俩个英文单词,第二个单词首字母大写.

#!/usr/bin/ptyhon

import sys       模块

print sys.argv[1]   模块属性,传递参数,传递进去的字符串

def isNum(s):

    for i in s:

        if i in '0123456789a':

            pass

        else:

            print "%s is not a number" %s

            sys.exit()

    else:

         print "%s is a number" %s

isNum(sys.argv[1])

print sys.argv[1]  模块属性 传递参数, 传递进去的是字符串
ls /proc/ 查看pid

函数的默认参数

缺省参数(默认参数) (默认参数从右到左定义,不能从只定义左边形参)(实参从左到右定义)

def fun(x,y=100)

print x +y

打印系统所有的Pid

#!/usr/bin/ptyhon

import sys

import os   os模块  os.listdir读取目录,将文件名变为列表列出

def isNum(s):

    for i in s:

        if i in '':

            pass

        else:

            break

    else:

        print s

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

    isNum(i)

函数的变量

 

全局变量和局部变量

全局变量在脚步开头定义。

在局部可以print

要在局部函数使用操作参数,需要声明成全局变量 global x

局部变量在函数内局部,使用完立即销毁。局部变量在全局使用,也需要声明global

1 #!/usr/bin/python

  2 def fun():

  3     x = 1

  4     y = 1

  5     print locals()

  6 fun()

  7 print locals()

locals() 统计变量输出成字典

函数的返回值

函数被调用后会返回一个指定的值

函数调用后默认返回NONE

return返回值

返回值可以是任意类型

return执行后,函数终止

return与print区别

查找pid方法二

#!/usr/bin/ptyhon

import sys

import os

def isNum(s):

    for i in s:

        if i not in '':

            return False

    return True

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

   if isNum(i):      如果返回值是true,则执行下面条件

       print i

查找pid方法三

#!/usr/bin/ptyhon

import sys

import os

#print sys.argv[1]

def isNum(s):

    if s.isdigit():     s.isdigit()如果是数字返回true 如果不是返回False

        return True

    return False

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

   if isNum(i):

       print i

多类型传值

可以将元组和字典的数值传到函数

def fun(x,y,z):

print x+y+z

t1=(2,3,5)

fun(*t)  加*传递元组数值到函数

dic = {'x':1,'y':4,'z':5}

fun(**dic)  加**传递字典到函数,参数需要一一对应,k值和形参一致。

冗余参数

处理多余的参数

两种类型,传到元组或者字典里

def fun(x,*args,**kwargs):  *args定义元组,**kwargs定义字典

单个字符传入元组,例如 1,4,‘a’

赋值传入字典   例如  x=1,y=2

 递归调用

#!/usr/bin/python

def factorial(n):

    sum=1

    for i in range(1,n+1):

        sum*=i

    return sum

print factorial(5)

递归的注意事项

必须有最后的默认结果

if n ==0

递归参数必须向默认结果收敛的:

factorial(n-1)

day30-python阶段性复习四的更多相关文章

  1. 【转】python 历险记(四)— python 中常用的 json 操作

    [转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...

  2. Python并发复习1 - 多线程

    一.基本概念 程序: 指令集,静态, 进程: 当程序运行时,会创建进程,是操作系统资源分配的基本单位 线程: 进程的基本执行单元,每个进程至少包含一个线程,是任务调度和执行的基本单位 > 进程和 ...

  3. 《笨办法学 Python(第四版)》高清PDF|百度网盘免费下载|Python编程

    <笨办法学 Python(第四版)>高清PDF|百度网盘免费下载|Python编程 提取码:jcl8 笨办法学 Python是Zed Shaw 编写的一本Python入门书籍.适合对计算机 ...

  4. Python 基础语法(四)

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  5. 初学 Python(十四)——生成器

    初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...

  6. Python第二十四天 binascii模块

    Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...

  7. Python/MySQL(四、MySQL数据库操作)

    Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...

  8. python学习第四讲,python基础语法之判断语句,循环语句

    目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...

  9. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

随机推荐

  1. 虚拟机ubuntu的常用命令集合

    一.文件/文件管理 ls 列出当前目录文件(不包括隐含文件) ls -a 列出当前目录文件(包括隐含文件) ls -l 列出当前目录下文件的详细信息 cd .. 回当前目录的上一级目录 cd -回上一 ...

  2. Lua和C++交互 学习记录之四:全局table交互

    主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3  参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1 ...

  3. <%@page contentType="text/html;charset=gbk"%> 与 <meta http-equiv="Content-Type" content="text/html; charset=GBK">区别

    前一个是在服务端起作用,是告诉应用服务器采用何种编码输出JSP文件流, 后一个是在客户端起作用,是告诉浏览器是采用何种编码方式显示HTML页面

  4. Ubuntu 16 , 从时间服务器更新时间

    因为在公司的内网,所以不能用Ubuntu默认的服务器去更新时间. 只能改成从网关 10.182.202.2 上取时间 1) 如果没有安装ntp 的话,先安装 apt-get install ntp 2 ...

  5. 7内存管理-MRC

    @0简介 内存管理,即内存里各个对象的管理,即内存里各个对象的生命周期的管理,(从面向对象的角度看) @1引用计数器 默认为1,即有一滴的生命血液,若为0就会死去 @2单个对象的管理 自己管理自己,自 ...

  6. boke练习: springboot整合springSecurity出现的问题,post,delete,put无法使用

    springboot 与 SpringSecurity整合后,为了防御csrf攻击,只有GET|OPTIONS|HEAD|TRACE|CONNECTION可以通过. 其他方法请求时,需要有token ...

  7. php 中文字符串反转

    /** * * 中文字符串倒序 * @param str $str * return str **/ function str_en_desc($str){ $len=mb_strlen($str); ...

  8. selenium chrome 自动加载flash

    #coding:utf-8from selenium import webdriverfrom selenium.webdriver.support.select import Selectfrom ...

  9. 【转】预装Win8/8.1 中文版系统升级为专业版或专业版含媒体中心版的简单方法

    [转]预装Win8/8.1 中文版系统升级为专业版或专业版含媒体中心版的简单方法 原文地址:http://www.iruanmi.com/upgrade-win8-china-to-a-higher- ...

  10. CentOS7 搭建LVS+keepalived负载均衡

    1.实验环境 4台节点 Keepalived1 + lvs1(Director1):192.168.31.4 Keepalived2 + lvs2(Director2):192.168.31.3 Re ...