什么是函数,干嘛啊,怎么干。一个py程序员的视角.md

什么是函数,干嘛啊,怎么干。一个py程序员的视角.md

前言

本文参考

https://www.runoob.com/python/python-functions.html

本质

math definition

y = f(x)

这里的f 就是函数。

你给f 一点参数,f 给你返回 使用这个参数x 后的结果y

py definition

def functionname( parameters ):
   function_suite
   return [expression]

or 你看到如下:

class Solution:
    def fizzBuzz(self, n: int) -> List[str]:
       # your code here

class 是类,是对象的蓝本

我们首先看到 class 声明,他的意思是,Solution 是一个现实世界玩意的计算机表示。

这里 Solution 就是 解决 leetCode 某道题目的 蓝本,这个蓝本里,你定义了解决问题的方式,

这个方式,方法, method or function ,中文把它称为 “函数”

回到函数

现在你知道,一个函数是定义了: 一个对象 能干的事情。

比如,我是人, eat 就是我的能干的事情。(而且 eat 之前,我会张开嘴)

class Human:
    def eat(self, 蛋糕: 甜点类食品) -> Boolean:
        for allTheCake in TheWorld:
            self.openMouth()
        def openMouth():# 一个函数里 还能定一个 子函数: 一个事情的包含的详细步骤
            print("Human Always open mouth before they eat!")
        return false # 吃蛋糕,我还没吃饱

so, 你看到,作为一个人,我会eat ,而且我 eat 要有参数地eat,我吃蛋糕(属于甜点类食品)

蛋糕: 甜点类食品 一如 n: int, 这是py 的传递参数给一个function(or call it: method,behaviour)的约定

aka:n: int == yourParam: TheTypeOfParam.

通过 函数定义,当新的上帝改造人类,并且他想要更改 Human 的 eat 行为,于是,新上帝就可以如下修改

class Human:
    def eat(self, 葡萄糖: 直接消化类食品) -> int:
        for allTheCake in TheWorld:
            self.injection()
        def injection():
            print("Human now use 🏥针头💉 before they eat!")
        return 80 # 注射葡萄糖是更加高效,新上帝规定 这个aciton可以令人类达到80%饱腹感, 他设定了新的 eat 行为返回 一个精确的数值,而不是饱或者不饱 的boolean 值

一个结论

现在你可以这样去看 使用py3 的上帝,是这样定义他的human 能发生的 aciton 的

class Human:
    def action(theThing1YourNeedForAction: theThing1Type, theThing2YourNeedForAction: theThing2Type, /*more if god like*/) -> theReturnTypeOfThisAction:
        # 这里是本个 action/ function 自己内部的处理

self 是什么?

翻译: self: 自己

当我们有了 一个 对象的蓝本,我们就可以创造一个对象。

创造的对象,创造的每个人都有自己的属性,如何访问每个对象的属性呢?

你可以使用self 访问一个对象的某个属性:

比如,每个人都有一个房屋列表,每个人(一个人就是一个上帝创造的对象),都可以贩卖自己的房子:



class Humam:
    houseList = [] # 每个人可以通过 self.houseList 来访问自己的房屋列表
    def soldMyHouse(self) -> int:
        #新的出售价格是:(如果我要卖我房屋列表里的第一个房子) 
        # 新的价格 等于: 取得 第一个对象 by: self.houseList[1]
        # 用这个房屋对象的houseSize 乘以 当时买的old_price 再乘以 今年涨了5倍
        new_price = self.houseList[1].houseSize * self.houseList[1].old_price * 5
        '''
        更好的方式:
        house_to_be_sold = self.houseList[1]
        new_price = house_to_be_sold.houseSize * house_to_be_sold.old_price * 5
        '''
        return new_price

而house 的蓝本可能是如下定义的:有名字,平方数,当时购买的价格

class House:
    houseName = "myHangzhouHouse"
    houseSize = 120
    purchasePrice = 10000 # 当时买的 10000 / 平方米
    # 你可以为你创造/购买的房子,命新的名,by using: self
    def changeMyHouseName(self, new_name: str):
        self.houseName = new_name

further reading about self

https://blog.csdn.net/CLHugh/article/details/75000104

以上就是py世界里函数的定义

posted on 2020-02-28 12:35  Paulkg12  阅读(514)  评论(0编辑  收藏  举报

导航