前面几天学习了python的基础语法,判断,循环,以及文件操作等等内容,对python也是有了一个认识。今天开始学习python的函数和模块。

函数

  • 函数是什么?
    我的理解就是,他和java中的方法是一样的,表示的是一个动作,将程序的一段逻辑单独抽象出来,在其他需要的地方可以直接进行调用,而不是重复的写逻辑,即让程序变的干净整洁,也可以节约更多的时间与空间。
  • 函数创建
    函数是使用def语句进行创建,基本语法如下:
def functionName(arg):
"functionExplain"
functionContent
return functionReturn ;
 

  函数由def去定义,然后加上函数名,加上参数(括号中的,可有,可无),在加上方法说明(相当于方法的注释),方法内容(函数所要表达的动作),最后还有函数返回,当然,如果这个函数没有返回则可以直接不写。
  我们看下面例子:

# -*- coding=utf-8 -*-
'''
Created on 2019年1月1日
函数 @author: Administrator
'''
def printTest (num = 1) :
print("*" * num);
 

我们如果只这样写一个函数,直接run的时候发现,其实没有任何的东西打印出来,因为这里只是定义了函数,要想让函数执行,我们必须调用函数才可以。

# -*- coding=utf-8 -*-
'''
Created on 2019年1月1日
函数 @author: Administrator
'''
def printTest (num = 1) :
print("*" * num); printTest(5);
 

这样才会后5个“*”号打印出来。
如果我们需要一个函数执行之后,想得到执行后的结果,那么我们可以在最后加上return语句

def printTest (num = 1) :
print("*" * num);
return "seccess";
str = printTest(5);
print(str);
 

这样,当我们输出str的值的时候就可以得到“seccess”,当然,如果我们函数没有return语句,则默认返回None。
下面我们将之前写过的一个根据用户输入的数生成斐波那契数列的例子用一个函数去表示:

# -*- coding=utf-8 -*-
'''
Created on 2019年1月1日
函数 @author: Administrator
''' def fibonacci (num=2) :
"生成长度为num的斐波那契数列"
num = num - 2;
fid = [0, 1];
if num < 0 :
print("请输入大于2的数字:");
return; for i in range(num) :
fid.append(fid[-1] + fid[-2]);
else :
return fid; num = int(input("请输入一个大于2的数字:"));
fid = fibonacci(num);
print(fid);
 
  • 形式参数
    上面例子中,我在定义fibonacci函数时在括号中写了一个num=2,其中这里的num表示形式参数,简称形参,它写在函数名的后面的括号中,因为他不是实际存在的参数,所以叫做形参,也 被叫做虚拟参数。
  • 实际参数
    实际参数就是在实际调用函数时传入的参数,它是实际存在的。
    我在下面调用fibonacci函数时,将用户输入的数字作为实参传给了 fibonacci 函数。而且在上面例子中,我默认num等于2,如果在调用这个函数时,不传入实参,则num默认实参为2.
  • 传递参数
    调用函数时,实参的个数需要和形参的个数一致,并且将实参依次传递给形参。
  • 位置参数
    与shell脚本一样,python脚本也可以将位置参数传入模块中,其中可以使用sys模块的argv列表进行接收。
#!/usr/bin/env python
import sys;
print sys.argv;
 

  上述例子由于要直接执行python脚本,所以就不在ide中执行,我直接打开我的云,在云上写的一个简单的小例子,下面是我执行两次的结果:

[root@iZwz963wlhi02sxk6nk1j5Z python]# ./hello.py
['./hello.py']
[root@iZwz963wlhi02sxk6nk1j5Z python]# ./hello.py hello word
['./hello.py', 'hello', 'word']
 

  第一次没有传任何参数,所以argv数组中就只有1个元素,第二次执行,传了2个参数,所以argv数组中则有3个参数。需要注意的是,这里传入的参数都是字符串类型的。

-------------------- END ---------------------


最后附上作者的微信公众号地址和博客地址


公众号:wuyouxin_gzh




Herrt灬凌夜:https://www.cnblogs.com/wuyx/

python语法(五)—函数的更多相关文章

  1. python语法之函数

    函数: 将特定功能代码编写在一个函数里 便于阅读和复用 对一组表达特定功能表达式的封装 使程序模块化 python内置函数: input(),print(),eval()... 函数定义 函数语法格式 ...

  2. python语法join函数

    Python语法中join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. vid = )

  3. python语法基础-函数-内置函数和匿名函数-长期维护

    ##################     内置函数        #######################  """ 一共是 68个内置函数: 反射相关的内置函 ...

  4. python语法------时间函数

    1.导入函数库: import time 获取格式化的时间 你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime(): #!/usr/bin/python # -*- co ...

  5. python语法_函数

    ---恢复内容开始--- 函数: 1 减少重复代码 2 定义一个功能,需要直接调用 3 保持代码一致性 def  funcation_name(参数s): 功能代码块0 参数可以为多个,传入时按照前后 ...

  6. python语法之函数1

    函数 计算机中的函数和数学中的函数不是一回事,而是一个subroutine .子程序.procedures.过程. 作用: 1.减少重复代码: 2.方便修改,更易扩展: 3.保持代码的一致性. 最简单 ...

  7. Python语法基础-函数,类以及调试处理

    [TOC] 1. 函数的定义 python中函数有两种: python自带的函数 用户定义函数 返回多个值 原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同 ...

  8. python语法基础-函数-装饰器-长期维护

    ######################################################### # 装饰器 # 装饰器非常重要,面试Python的公司必问, # 原则:开放封闭原则 ...

  9. python语法基础-函数-进阶-长期维护

    ###############    函数的命名空间和作用域    ############## """ # 函数进阶 命名空间和作用域 命名空间 全局命名空间——我们自 ...

  10. Python语法之函数、引用和装饰器

    所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用 函数是带名字的代码块,用于完成具体的工作 需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用该 任务 ...

随机推荐

  1. Python常用模块-摘要算法(hashlib)

    Python常用模块-摘要算法(hashlib) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MD5算法参数详解 1.十六进制md5算法摘要 #!/usr/bin/env p ...

  2. Linux下/etc/passwd、/etc/shadow、/etc/group文件

    1./etc/passwd [root@prac ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbi ...

  3. HDU 5299 圆扫描线 + 树上删边

    几何+博弈的简单组合技 给出n个圆,有包含关系,以这个关系做游戏,每次操作可以选择把一个圆及它内部的圆全部删除,不能操作者输. 圆的包含关系显然可以看做是树型结构,所以也就是树上删边的游戏. 而找圆的 ...

  4. python 入门基础22 --复习 面向对象

    面向过程编程思想: 核心:过程 过程指的是解决问题的具体步骤,即先干什么再干什么. 基于该编程思想编写程序,相当于一条流水线,一种机械式的思维方式. 面向对象编程思想: 核心:对象 对象指的是数据与方 ...

  5. Ubuntu下ibus在firefox浏览器中选中即删除的解决办法

    Ubuntu上的firefox更新到36版后,ibus在浏览器中输入中文时选中的文字就会被删除.这个问题在很多贴吧.论坛上也有讨论,不过很多方法都无效.最简单有效的办法就是在命令行输入 ibus-se ...

  6. 利用Python生成随机密码

    #coding:utf-8 #利用python生成一个随机10位的字符串 import string import random import re list = list(string.lowerc ...

  7. Net::HTTP 一次添加 cookie, body 发送post请求

    use Net::HTTP::Request; use Net::HTTP::URL; use Net::HTTP::Transport; my $url = Net::HTTP::URL.new(& ...

  8. .NET下获取应用程序目录的一些方法

    今天在Console Application下搞了一个小功能,期间需要获取当前应用程序的根目录,试了很多方式,都不能直接获取到,没有像Server.MapPath()这类的方法来方便地使用. 下面列举 ...

  9. mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg

    mysql5.7执行sql语句报错:In aggregated query without GROUP BY, expression #1 of SELECT list contains nonagg ...

  10. C#: +(特性 ) + Attitude C#(类)前面或者(方法)前面 (中括号)定义

    首先要说的是,可能一些刚接触C#的朋友常常容易把属性(Property)跟特性(Attribute)弄混淆,其实这是两种不同的东西.属性就是面向对象思想里所说的封装在类里面的数据字段,其形式为: 1: ...