python中带名称的代码块(函数)

作者: panxd | 来源:发表于2017-06-26 15:13 被阅读0次
  • 1.函数的定义
#基本形式:
def fun_name(arg):
     Suite
     Return [expression]
  • 1.def:定义函数时的关键字
  • 2.fun_name:函数名
  • 3.arg:函数的参数名,传入不同的参数,返回值也不同,通过参数的传递使函数的功能得以实现。
  • 4.Suite:实现函数功能的代码段
  • 5.return:后面接的表达式就是函数的返回。
  • 2.函数的调用
 fun_name(arg)  #函数名(参数)```
  * 函数被调用后返回的就是`return`表达式的值。
  * 函数调用时的参数要严格按照函数定义的时候的参数来进行传递。
  * `Return` 后面接的是表达式,不能接赋值语句。
* 3.函数的参数
  * 1.必备参数:(函数定义时)
函数的参数在定义时只有参数名,没有值,这种定义的方式使得函数调用时一定得传入参数才能够正常的调用函数。必备参数的个数和顺序必须是和定义时是一致的,除非调用时使用了关键字参数就可以改变参数顺序传入。

  * 2.默认参数:(函数定义时)
函数的参数在定义时给出了初始值,这时参数在调用时如果不传入值给这个参数,函数就会使用定义时的默认值,如果传了值进来给这个参数,那么默认值就会被丢弃而使用你传进来的这个值。

  * 3.关键字参数:(函数调用时)
关键字参数是指的在函数调用的时候,传参时把定义函数时参数名和对应的值一起传入函数中,这时传入的参数的顺序就不用考虑了。

  * 4.不定长参数:(定义和调用都可以用)
注:函数在定义时不确定要传入的参数个数时使用(不确定要传入几个参数)
    * `*args `代表元组,`args`是元组的名字,传入的值就是这个元组的元素,这种参数不接受关键字参数。
    * `**kwargs `代表字典,`kwargs`是这个字典的名字,调用时使用关键字参数,把参数作为字典的元素,参数名为字典的键,参数值为字典的值。
这两种参数可以同时使用,但必须`*args`在前面,`kwargs`在后面,函数调用时要把直接传的值放在关键字参数的前面。
    * `*args`和`**kwargs`也可以在函数调用时的使用。
当我们清楚了函数定义时参数的个数和顺序时,我们可以把需要传入的参数组合成元组,使用`*`+`元组名`进行传参来调用函数。
我们把需要传递进去的参数的参数名作为字典的键,参数的值作为字典的值,再把这个由需要传递的进去的参数组成的字典用**+字典名进行传参来调用函数

`注:调用函数时参数要根据函数定义时的参数的个数和类型进行值的传递时,一定要清楚在函数定义时参数是什么类型的参数,只有传进去的参数能与定义时相匹配才能正确的调用返回函数的返回值。`
```python
In [4]: def sum1(a):
   ...:     s = 0
   ...:     for i in a:
   ...:         s += i
   ...:     return s
   ...: 

In [5]: sum1((1,2))
Out[5]: 3



#不定长参数
In [6]: def sum2(*arg):
   ...:     s = 0
   ...:     for i in arg:
   ...:         s += i
   ...:     return s
   ...: 

In [7]: sum2(1,2,3,4)
Out[7]: 10
  • 练习代码1:
#给定一个任意的字符序列,
#将字符序列中的大写字母转换成小写,
#将小写字母转换成大写'''
#详细方法一
def fun(x):
    list1 = list(x)#将输入的序列转换为列表
    for i in range(0,len(list1)):#len(list1)为列表的长度,i为循环变量
        if list1[i].islower():
            list1[i]=list1[i].upper()#转换为大写
        elif list1[i].isupper():
            list1[i]=list1[i].lower()#转换为小写
    return list1#返回转换后的列表
    
def converted_case(x):
    try:
        if type(x) == str:#如果是字符串,则将其通过join拼接起来
            result = ''.join(fun(x))
        else:
            result = fun(x)
        return result
    except Exception as e:
        print('出错的原因是:'+str(e))
#改进后的方法二:
def converted_case(x):
    s = ''
    for i in x:                # for循环遍历传入的序列x
        if i.isupper():        #如果某个元素i是大写的
            s += i.lower()     #将其转换为小写的
        elif i.islower():      #如果某个元素i是小写的
            s += i.upper()     #将小写字母转换成大写的
        else:
            s += i             #进行字符串的拼接
    return type(x)(s)   
  • 练习代码2:
#递归实现阶乘
In [1]: def factorial(n):    #求n的阶乘
   ...:     if n == 1:
   ...:         return 1
   ...:     else:
   ...:         return factorial(n-1)*n
   ...:     

In [2]: print("5的阶乘为"  +  str(  factorial(5)  )   )    #将结果转换为字符串拼接起来
5的阶乘为120  
  • 练习代码3:
#给定一个任意的序列,对这个序列进行逆序输出
In [1]: def reversed_sequence(x):
   ...:     if type(x) == str:    #如果输入的数列是字符串
   ...:         list1 = list(x)   #将字符串转换为列表
   ...:         list1.reverse()   #列表的翻转方法
   ...:         result = ''.join(list1)   #将列表中的元素通过join拼接起来
   ...:     else:
   ...:         list1 = list(x)   #将字符串转换为列表
   ...:         list1.reverse()   #列表的翻转方法
   ...:         result = tuple(list1)     #将转换后的列表转换回原来输入的元祖类型
   ...: 
   ...:     return result
   ...: 
In [2]: reversed_sequence([1,2,3])
Out[2]: (3, 2, 1)
In [3]: reversed_sequence((1,2,3))
Out[3]:(3, 2, 1)

#优化后的代码
In [1]: def reversed_sequence(x):
   ...:     list1 = list(x)# list1 = reversed(x)
   ...:     list1.reverse()
   ...:     if type(x) == str:
   ...:         return ''.join(list1)
   ...:     return type(x)(list1)
   ...: 
In [2]: reversed_sequence([1,2,3])
Out[2]: [3, 2, 1]

In [3]: reversed_sequence((1,2,3))
Out[3]: (3, 2, 1)
  • 练习代码4
#生成一个n以内能被m整除的列表,此处的n是整数,n,m让用户自己输入
In [8]: list1 = []#创建一个空的列表,用来存放被7整除的数
   ...: def fun(n,m):
   ...:     for i in range(n):
   ...:             if i % m == 0:# 从0开始,0也能被7整除
   ...:                 list1.append(i)
   ...:     print('%s以内能被%s整除的数构成的列表: '%(n,m)+str(list1))#格式化打印输出
   ...:     return list1
   ...: def run(n,m):
   ...:     if n.isdigit():#如果n是整数
   ...:         n = int(n)  #将n转换为整形
   ...:         if m.isdigit():
   ...:             m = int(m)
   ...:             fun(n,m)  #调用函数fun()
   ...:         else:
   ...:             print('你输入的m不是整数,请重新输入')
   ...:     else:
   ...:         print('你输入的n不是整数,请重新输入')
   ...: 
   ...: while True:#下面是一个比较简单的用户友好界面
   ...:     print("----1.进入程序----")
   ...:     print("----q.退出程序----")
   ...:     print("----Q.退出程序----")
   ...:     op = input('请选择输入一个操作数: ')#由用户自己输入操作数选择进入或退出程序
   ...:     if op.isdigit():#如果输入的是数字
   ...:         op = int(op)
   ...:         if op == 1:
   ...:             n = input('请输入一个范围的最大数n:')#由用户自己输入n
   ...:             m = input('请输入一个除数m:')#由用户自己输入m
   ...:             run(n,m)#调用run()函数
   ...:         else:
   ...:             print('输入有误,请重新输入')
   ...:     elif op == 'q' or op == 'Q':  #如果用户输入q或者Q则退出程序
   ...:         exit(0)
   ...:         
#运行结果
----1.进入程序----
----q.退出程序----
----Q.退出程序----

请选择输入一个操作数: 1

请输入一个范围的最大数n:20

请输入一个除数m:5
20以内能被5整除的数构成的列表: [0, 5, 10, 15]
----1.进入程序----
----q.退出程序----
----Q.退出程序----

请选择输入一个操作数: 

相关文章

  • python中带名称的代码块(函数)

    1.函数的定义 1.def:定义函数时的关键字 2.fun_name:函数名 3.arg:函数的参数名,传入不同的...

  • Python函数基础

    Python中的函数,是由若干语句组成的语句块、函数名称、参数列表构成,它是组织代码的最小单元。借助函数我们能实现...

  • pythoy开发--函数

    python函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用该函数。需要在程序中多次执行...

  • 函数

    Python 中的函数是由若干语句组成的语句块、函数名称、参数列表构成,它是组织代码的最小单元,可以完成一定的功能...

  • 函数

    函数: 完成某个特定任务的代码块, 给代码起一个合适的名称称之为函数名称. 以后需要执行代码块只需要利用函数名称调...

  • python函数

    python函数 函数代码块以def关键字开头 后接函数名 及圆括号 必须以:开头 在 python 中,stri...

  • Python学习之路怎么学习 函数

    1. 定义函数 1.1 一般函数 函数是带名字的代码块,该代码块是完成特定工作的固定代码序列。如果程序中多次出现相...

  • 1.8 定义函数

    ● Python也支持自定义函数,以下是简单的规 则:(1)函数代码块以def关键词开头,后接函数标识符名称和圆括...

  • Python 学习日志第四篇(912)

    函数 函数是一大块可重用的代码。它是有名称的代码块,接受输入、提供输出并可存储在文件中供以后使用。 给函数名赋值 ...

  • 《Python从小白到大牛》第10章 函数式编程

    《Python从小白到大牛》已经上市! 程序中反复执行的代码可以封装到一个代码块中,这个代码块模仿了数学中的函数,...

网友评论

    本文标题:python中带名称的代码块(函数)

    本文链接:https://www.haomeiwen.com/subject/blidcxtx.html