python笔记--自定义函数

函数

函数是把一些负载的代码封装起来,需要的时候直接调用,重复利用提高效率并且能够简化程序的结构。

1.语法

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

def functionName(parms1, parms2, ...):
    code block
    return expression

2.函数的定义与调用

#定义函数

>>> def func1():
        print "aaa"
        return "bbb"

注意:在Python交互环境中定义函数时,函数定义结束后需要按两次回车重新回到>>>提示符下。

#调用函数

>>> a=func1()
aaa
>>> print a
bbb

return作用:结束该语句块,并返回一个值。如果没有return语句或return后面为空,函数执行完毕后也会返回结果,只是结果为None。

在linux环境下,我们把函数(如func())定义到一个.py文件中了(如test.py),那么,可以在该文件的当前目录下启动Python解释器,用from test import func来导入func()函数,注意test是文件名(不含.py扩展名)。

3.空函数

如果想定义一个什么事也不做的空函数,可以用pass语句:

>>>def func2():
       pass

pass语句什么都不做,那有什么用?

实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。pass还可以用在其他语句里,比如:

if age >= 18:
    pass

缺少了pass,代码运行就会有语法错误。

4.函数参数

>>> def func3(name,age):    #括号中的叫形参
        print (name,age)
        return (name,age)
 
>>> a=func3(‘fjc‘,25)        #括号中的叫实参
        (‘fjc‘, 25)

#参数检测

一般情况一个形参只能对应一个实参,在调用函数时,如果参数个数不对,Python解释器会自动检查出来,并抛出TypeError错误。

但是有两种形参可以对应多个实参,即可变参数和关键字参数,例如:

>>> def func4(*name):    #可变参数,有一个*
        print(name)
        
>>> a=func4(‘zhangsan‘,‘lisi‘)
(‘zhangsan‘, ‘lisi‘)     #输出结果为一个元组
 
 
>>> def func5(**dic):    #关键字参数,有两个*
        print(dic)
>>> a=func5(zhangsan=12,lisi=15)    #注意实参的格式
{‘lisi‘: 15, ‘zhangsan‘: 12}        #输出结果为一个字典

注意:可变参数和关键字参数同时出现时,可变参数在前,例如:

>>> def func6(*aa,**bb):
        print aa
        print bb
        
>>> func6(1,2,3,a=1,b=2,c=3)
(1, 2, 3)
{‘a‘: 1, ‘c‘: 3, ‘b‘: 2

如果,需要将已经定义的列表或元组、字典使用函数调用,需要在列表或元组前加一个*,在字典前加两个*,例如:

>>> lis=[1,2,3]
>>> dic={‘a‘:1,‘b‘:2}
>>> a=[1,2,3]
>>> b={‘a‘:1,‘b‘:2,‘c‘:3}
>>> def func7(*lis,**dic):
        print (lis,dic)
        
>>> func7(*a,**b)    #a前加一个*,b前加两个*
((1, 2, 3), {‘a‘: 1, ‘c‘: 3, ‘b‘: 2})

#默认参数

>>> def func8(name,age=18):    #注意:默认参数只能放在形参的最后一个
        print (name,age)
>>> func8(‘zhangsan‘)
(‘zhangsan‘, 18)

#在调用函数时,实参不按顺序写,例如:

>>> func8(age=25,name=‘fjc‘)    #使用“形参=实参”的方式
(‘fjc‘, 25)

5.递归函数

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。例如:

#计算阶乘

>>> def func9(n):
        if n==1:
        return n
    return n*func9(n-1)
    
>>> func9(4)
24

验算的过程如下:

4*func9(3)==>

4*3*func9(2)==>

4*3*2*func9(1)==>

4*3*2*1

递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

练习:

1. 斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。

随便输入两个数,生成类似的斐波那契数列。

#!/usr/bin/env python
def func (*number):
    lis=[first,second]
    for i in range(10):
        lis1=list(reversed(lis))
        lest=lis1[0]+lis1[1]
        lis.append(lest)
    print(lis)
first=input("please input the first number:")
second=input("please input the second number:")
a=func(first,second)

#这个简单程序能够实现:在交互式模式随便输入两个数字,以这两个数字为基,输出斐波那契数列。

3. 输出 9*9 乘法口诀表

#!/usr/bin/env python
def func(n,m):
    for x in range(1,10):
        for y in range(1,x+1):
            print "%d*%d=%d\t"%(x,y,x*y),
        print ""
func(1,10)

或者:

#!/usr/bin/env python
def func(n,m):
    for x in range(n,m):
        for y in range(n,m):
            if x>=y:    #设为x<=y,是另一种效果
                print"%d*%d=%d\t"%(x,y,x*y),
            else:
                continue
        print ""
a=func(1,10)

5. 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

#!/usr/bin/env python
def func(a,b,c,d):
    f=0
    for x in (a,b,c,d):
        for y in (a,b,c,d):
            for z in (a,b,c,d):
                if x!=y and x!=z and z!=y:
                    print "%d%d%d"%(x,y,z)
                    f+=1
    print "total:%d"%f
func(1,2,3,4)

6. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

#!/usr/bin/env python
def func(n,m):
    x=[]
    for i in range (1,m+1):
         x.append(int("%d"%n*i))
    print sum(x)
n=input("number:")
m=input("total:")
func(n,m)
时间: 2024-12-31 16:46:05

python笔记--自定义函数的相关文章

MySQL学习笔记-自定义函数

MySQL学习笔记-自定义函数 1.自定义函数简介 自定义函数:用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同 自定义函数的两个必要条件:(1)参数  (2)返回值 自定义函数: 创建自定义函数 CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body 关于函数体: 1.函数体可以由合法的SQL语句构成: 2.函数体可以是

MySQL学习笔记—自定义函数

MySQL学习笔记-自定义函数 注释语法: MySQL服务器支持3种注释风格: 从'#'字符从行尾. 从'– '序列到行尾.请注意'– '(双破折号)注释风格要求第2个破折号后面至少跟一个空格符(例如空格.tab.换行符等等).该语法与标准SQL注释语法稍有不同. 从/序列到后面的/序列.结束序列不一定在同一行中,因此该语法允许注释跨越多行. 下面的例子显示了3种风格的注释: mysql> SELECT 1+1; # This comment continues to the end of li

python的自定义函数

今天想把上次参考着网上教程写的scrapy爬虫改写成requests和beautifulsoup的普通爬虫,写着写着发现自己对python的自定义函数还不是太熟悉(自己TCL了.........流泪),赶紧菜鸟教程上复习一下,顺便写篇文章. 0x01:关键字 python中,自定义函数使用def关键字,后面加函数名和参数列表,如下: def 函数名(参数列表): 函数体 如果不需要传参,括号里就不用填,注意,python中不需要定义变量类型.自定义函数除了函数的功能是我们自己编写代码实现的外,其

python中自定义函数的保留字是

Python使用def开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的具体功能实现代码,如果想要函数有返回值, 在expressions中的逻辑代码中用return返回. 自定义函数 创建函数非常简单,它使用关键字(保留字) “def”,下面的代码创建了一个带有一个参数的函数,并使用不同的参数调用                                                                                            

python的自定义函数(函数类型、def、range、rerun)

一.PyCharm基本设置 1.用Ctrl+鼠标滚轮--放大或缩小字体 搜索zoom 2.在Windows资源管理器打开文件或目录 搜索keymap 设置成不常用的键即可,如F3. 3.代码提示 搜索letter 二.自定义函数 1.为什么要使用函数 函数中的代码一次编写,多处运行;函数可以让代码复用,减少代码冗余. 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也

python笔记4 - 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数. 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 函数的第一行语句可以选择性地使用文档字符串-用于存放函数说明. 函数

python基础:自定义函数

一.背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下 while True: if cpu利用率 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 硬盘使用空间 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 内存占用 > 80%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 腚眼一看上述

[python 笔记3]函数(方法?)

1.定义 python函数以关键字def标识 def test(name): print 'hello %s'%(name) name=raw_input('please input your name: ') test(name) PS:在python中代码块以缩紧的方式进行标识,所以缩进对齐的语句为一个代码块,这比像C++\java使用{}进行标识的方法方便不少,但是也对一些代码对齐不规范的同学带来一些麻烦 def 函数名(参数列表): 函数体 2.参数列表 python在函数中的参数与C+

MIT公开课:计算机科学及编程导论 Python 笔记4 函数分解抽象与递归

Lecture4:Decomposition and abstraction through functions:introduction to recursion 函数分解抽象与递归 Functions 函数 block up into modules 分解为模块 suppress detail 忽略细节 create "new primitives" 创建原语的思考方式 w3school Python函数 #example code for finding square roots