一:Python 自定义函数

函数示意图如下:

1.使用函数的好处:

  • 代码重用
  • 保持一致性,易维护
  • 可扩展性

2.函数定义

  • 函数定义的简单规则:

    • 函数代码块以def关键词开头
    • 后接函数标识符名称和圆括号(),名称不能用纯数字或值python保留字符定义
    • 任何传入参数和自变量必须放在圆括号中间函数内容以冒号起始,并且缩进若有返回值
    • 函数通常使用三个单引号 '''...'''   来注释说明函数;函数体内容不可为空,可用 pass 来表示空语句
    • 语法如下
  • 函数名称定义的要求:
    •   不要以纯数字命名
    •   不要以python中保留字符(关键字)来命名
    •   不要以文件名命名
    •   不能出现特殊字符
    •   要简短且见名知义
      def 函数名():
          函数体

3.return 返回语句

  • 每个函数都有一个 return 返回值,如果没定义则返回 None
  • 函数中只要执行到 return 语句,函数就自动结束
  • 可以写多个 return 语句但是第二个及之后的 return 语句不会被执行
  • 可以通过return x,y,z形式返回多个值
    def num(a,b):
        c = int(a) + int(b)
        return a,b,c

4.参数:

  • 形参,写在函数声明的位置的变量量叫形参
  • 实参,在函数调⽤的时候给函数传递的值. 叫实参
    •   实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值.
  • 传参,给函数传递信息的时候将实际参数交给形式参数的过程被称为传参

5.参数的分类:

  • 位置参数

    def add(a,b):   #括号内为形参
        return a+b
    print (add(2,3))  #括号内为实参
    
    def jian(a,b):
        return a-b
    
    def cheng(a,b):
        return a*b
    
    def chu(a,b):
        return a/b
    
    #求出给定区间的偶数和
    def sums(x,y):
        a = []
        for i in range(x,y+1):
            if i % 2 == 0:
                a.append(i)
        print (sum(a))

    示例如下:

    #统计出字符串中某个字母有多少个
    def counts(s,x):
        print (s.count(x))
    
    #分数评级方法,90分以上:A,70分以上:B,60分以上:C,其他:D
    def PG(score):
        if score > 90:
            print ("A")
        elif score > 70:
            print ("B")
        elif score > 60:
            print ("C")
        else:
            print ("D")
    #封装一个功能,实现统计文件内容行数
    def count_line(filepath):
        with open(filepath,"r") as data:
            print (len(data.readlines()))
    #coding=utf-8
    """
    封装登录和注册方法进行登录注册要求如下:
    先定义一个字典来存放用户名,账号和密码如dic = {'admin': '123456', 'xfs': '234567'}
    要求如下:
    1、从字典中获取用户完成登入,登入时判断用户是否存在,存在直接登入
    2、如果输入的登入用户判断不存在字典,则调用注册方法,完成该用户的注册,注册成功后写入字典
    """
    dic = {'}
    
    def register():
        user = input("输入账号:")
        A = True
        while A:
            pwd = input("输入密码:")
            repwd = input("请确认密码:")
            if repwd == pwd:
                dic.setdefault(user,pwd)
                A = False
            else:
                print ("两次密码不一致!")
    
    def login():
        user = input("请输入账号:")
        if user in dic.keys():
            for i in range(3):
                pwd = input("请输入密码:")
                if pwd == dic.get(user):
                    print ("登录成功")
                    break
                else:
                    print ("密码错误")
        else:
            print ("账号不存在,请注册!")
            register()
    
    login()
    #coding=utf-8
    
    #封装一个方法,实现人民币和美元汇率转换
    
    def Change(a):
        if a[:3] == "¥":
            return ("%.4f" % (float(a[3:])/6.78))
        elif a[:1] == "$":
            return ("%.4f" % (float(a[1:])*6.78))
        else:
            return "输入有误!"
  • 默认参数

    def abc(x,y=5):
        print x + y
    abc(1)
    abc(1,2)
  • 可变长参数
    def abc(x,*y):
        print x,y
    abc(1,2)
    abc(1,2,3,4,5,6)
  • 关键字参数
    #coding=utf-8
    
    stu = {"name":"zhangsan","age":20}
    
    def abc(x,**y):
        return x,y
    
    #传参方式如下
    print (abc(1,**stu))
    print (abc(1,name="zhangsan",age=20))
    print (abc(1,**{"name":"zhangsan","age":20}))

6.局部变量和全局变量

  • 局部变量是在函数内部定义的变量,只能在函数内部使用,函数执行结束后,函数内部的局部变量,会被系统回收不同的函数,不同函数可以定义相同的名字的局部变量,但是各用各的不会产生影响。
  • 全局变量是在函数外部定义的变量,(没有定义在某一个函数内),所有函数内部都可以使用这个变量。

python(函数封装)的更多相关文章

  1. Appium python自动化测试系列之滑动函数封装实战(八)

    8.1 什么是函数的封装 教科书上函数的封装太官方,我们这里暂且将函数的封装就是为了偷懒把一些有共性的功能或者一些经常用的功能以及模块放在一起,方便我们以后再其他地方调用.这个只是个人的理解所以大家懂 ...

  2. 初识代码封装工具SWIG(回调Python函数)

    这不是我最早使用swig了,之前在写Kynetix的时候就使用了swig为python封装了C语言写的扩展模块.但是当时我对C++还不是很了解,对其中的一些概念也只是拿来直接用,没有理解到底是什么,为 ...

  3. python requests函数封装方法

    python  requests函数封装方法 上代码 import requests import json """ 封装request请求, 1.post:my_pos ...

  4. python 函数之day3

    一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...

  5. Python函数讲解

    Python函数

  6. Day03 - Python 函数

    1. 函数简介 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print():也可以自己创建函数,这 ...

  7. Python 函数基础、有序集合、文件操作(三)

    一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...

  8. Python 函数之路

    ---恢复内容开始--- python函数的定义 def add(): a = 1 b = 2 c == a + b print(c) 函数就是把一段实现某一个功能的代放进一个封装的方法名里,这个方法 ...

  9. Python函数篇:装饰器

    装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理. ...

  10. Python 3.X 调用多线程C模块,并在C模块中回调python函数的示例

    由于最近在做一个C++面向Python的API封装项目,因此需要用到C扩展Python的相关知识.在此进行简要的总结. 此篇示例分为三部分.第一部分展示了如何用C在Windows中进行多线程编程:第二 ...

随机推荐

  1. sql server exec 参数的传递

    来源:https://www.cnblogs.com/guohu/p/11142991.html 1 :普通SQL语句可以用exec执行 Select * from tableName exec('s ...

  2. Android Studio打包没有Generate signed apk选项 解决方法

    原文地址:https://www.jianshu.com/p/9e02e55f0ba8 1.点击build栏目-并没有Generate signed apk选项 2.点击file,选中如下图所示Syn ...

  3. Spring cloud微服务安全实战-7-5配置grafana图表及报警

    先过一下grafana的配置文件 grafana的配置文件. 右键服务的地址.发信人 账号 和面等 配置要连到prometheus上. 登陆的密码是多少,第二行是不允许用户注册. dashboard. ...

  4. C#对泛型实例化对像的方法

    最近在搞一个小东东,用到了泛型的处理,用到了对泛型的实例化问题.下面来讲讲对泛型的实例化,以代码为例,如: public class A { } public class B<T> { p ...

  5. [LeetCode] 323. Number of Connected Components in an Undirected Graph 无向图中的连通区域的个数

    Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is a pair of nodes), ...

  6. NET Core3高性能RPC框架

    NET Core 3.0 使用gRPC 一.前言 在前一文 <ASP.NET Core 3.0 使用gRPC>中有提到 gRPC 支持双向流调用,支持实时推送消息,这也是 gRPC的一大特 ...

  7. celery无法启动的问题 SyntaxError: invalid syntax

    遇到了celery无法启动的问题,报错:SyntaxError: invalid syntax ,这是因为我使用的python版本为最新3.7.3 ,而async已经作为关键字而存在了 在 celer ...

  8. 怎么又出错了?盘点java中最容易出现的错误

    现如今,java已经广泛应用各种软件开发领域.基于面向对象的设计,java屏蔽了诸如C,C++等语言的一些复杂性,提供了垃圾回收机制,平台无关的虚拟机技术,Java创造了一种前所未有的开发方式.所以, ...

  9. Django django.core.exceptions.ImproperlyConfigured: WSGI application 'myblog.wsgi.application' could not be loaded; Error importing module.报错

    报错内容 django.core.exceptions.ImproperlyConfigured: WSGI application 'myblog.wsgi.application' could n ...

  10. leetcode tree相关题目总结

    leetcode tree相关题目小结 所使用的方法不外乎递归,DFS,BFS. 1. 题100 Same Tree Given two binary trees, write a function ...