精华内容
下载资源
问答
  • 使用def语句定义函数,定义之后可以像内建函数一样使用,函数的名字也可以随便取,但不能和关键字相同,自定义函数能使一些比较长的程序简化,例如可以自定义一个就算累加的函数,用到程序时只需调用函数,不用再次...

    使用def语句定义函数,定义之后可以像内建函数一样使用,函数的名字也可以随便取,但不能和关键字相同,自定义函数能使一些比较长的程序简化,例如可以自定义一个就算累加的函数,用到程序时只需调用函数,不用再次编写累加的程序代码。

    工具/原料

    python2.7, IDLE python GUI

    步骤/方法

    1

    打开IDLE python GUI,点击开始-所有程序-python2.7-IDLE python GUI,或者直接进入dos环境,或者其他的IDLE。

    db196cdade49610f6576f9b0a56817e950e1d2b4.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    2

    首先,创建一个简单的自定义函数,定义为K函数。

    8a17b3042e6817e9a3c15a4cd356d53da924ceb4.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    3

    假如x==Kill,那么,就可以代入刚才所创建的K函数,最后返回一个语句,x为任意字符,空白字符也可以。

    2f2909e951e10ef8ac7681892324d8e9cdd2ccb4.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    4

    要注意的是,用def创建函数的时候,k(x)括号里面是不用双引号的,而调用自定义函数的时候,在括号了就要加上双引号。

    5

    上面的定义函数比较简单,只用了一个print输出语句,现在,定义一个累加的函数,就要用到while函数和if函数了。

    50a010f85856d53d5e048c5d47d2bb665059cab4.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    6

    A函数是用来计算累加的,其中用到了一个while循环和if判断,x为自定义变量,假如现在X为100,也就是说此函数计算1+2+3+...+100的和。

    5917cb3da824d8e934f2efd2da598540112ac8b4.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

    END

    经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。

    举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

    展开阅读全部

    展开全文
  • 一般来说当我们创建自定义集合的时候为了让其能支持foreach遍历,就只能让其实现IEnumerable接口(可能还要实现IEnumerator接口)  但是我们也可以通过使用yield关键字构建的迭代器方法来实现foreach的遍历,且自定义...

      一般来说当我们创建自定义集合的时候为了让其能支持foreach遍历,就只能让其实现IEnumerable接口(可能还要实现IEnumerator接口)

      但是我们也可以通过使用yield关键字构建的迭代器方法来实现foreach的遍历,且自定义的集合不用实现IEnumerable接口

      注:虽然不用实现IEnumerable接口 ,但是迭代器的方法必须命名为GetEnumerator() ,返回值也必须是IEnumerator类型

      实例代码以及简单说明如下:

    展开全文
  • MySQL5.7创建自定义函数

    千次阅读 2019-11-21 10:12:57
    在mysql5.7创建自定义函数时,要注意有一个坑,要加上DELIMITER $ $ ,$ $ DELIMITER 这两个关键字,要不然就会一直报错,要注意!!! 例如: CREATE FUNCTION select_parent_province(parent_area_code VARCHAR(20...

    这里以子id查询最顶级父级数据为例
    在mysql5.7创建自定义函数时,要注意有一个坑,要加上DELIMITER $ $ ,$ $ DELIMITER 这两个关键字,要不然就会一直报错,要注意!!!
    例如:

    CREATE FUNCTION select_parent_province(parent_area_code VARCHAR(20)) RETURNS VARCHAR(20)
    BEGIN
    DECLARE oTemp VARCHAR(20);
    DECLARE oTempParent VARCHAR(20);
    
    SET oTemp = '';
    SET oTempParent = parent_area_code;
    
    	WHILE oTempParent <> '0'
    	DO
    	SELECT area_name,parent_area_code INTO oTemp,oTempParent FROM system_area WHERE area_code = oTempParent AND area_level = 3;
    	END WHILE;
    	RETURN oTemp;
    END
    

    这样子,执行之后,是会报错的,在声明变量时就会报错
    而加上DELIMITER $ $关键字之后

    DELIMITER $$
    CREATE FUNCTION select_parent_province(parent_area_code VARCHAR(20)) RETURNS VARCHAR(20)
    BEGIN
    DECLARE oTemp VARCHAR(20);
    DECLARE oTempParent VARCHAR(20);
    
    SET oTemp = '';
    SET oTempParent = parent_area_code;
    
    	WHILE oTempParent <> '0'
    	DO
    	SELECT area_name,parent_area_code INTO oTemp,oTempParent FROM system_area WHERE area_code = oTempParent AND area_level = 3;
    	END WHILE;
    	RETURN oTemp;
    END $$
    DELIMITER ;
    

    就可以完美执行了

    展开全文
  • 键盘侦听器是一个模块,允许您创建自定义热键(组合)或自定义关键字,并将其绑定到Python中的自定义函数。 组合是绑定到功能的自定义热键。当按下组合键时,将执行该功能。组合真的很容易设置,可以在下面的示例中...
  • Flink SQL 实战 (4):使用自定义函数实现关键字过滤统计 在上一篇实战博客中使用POJO Schema解析来自 Kafka 的 JSON 数据源并且使用自定义函数处理。 现在我们使用更强大自定义函数处理数据 使用自定义函数实现...

    Flink SQL 实战 (5):使用自定义函数实现关键字过滤统计

    在上一篇实战博客中使用POJO Schema解析来自 Kafka 的 JSON 数据源并且使用自定义函数处理。

    现在我们使用更强大自定义函数处理数据

    使用自定义函数实现关键字过滤统计

    自定义表函数(UDTF)

    与自定义的标量函数相似,自定义表函数将零,一个或多个标量值作为输入参数。 但是,与标量函数相比,它可以返回任意数量的行作为输出,而不是单个值。

    为了定义表函数,必须扩展基类TableFunction并实现评估方法。 表函数的行为由其评估方法确定。 必须将评估方法声明为公开并命名为eval。 通过实现多个名为eval的方法,可以重载TableFunction。 评估方法的参数类型确定表函数的所有有效参数。 返回表的类型由TableFunction的通用类型确定。 评估方法使用 collect(T)方法发出输出行。

    定义一个过滤字符串 记下关键字 的自定义表函数

    KyeWordCount.java:

    import org.apache.flink.api.java.tuple.Tuple2;
    import org.apache.flink.table.functions.TableFunction;
    
    public class KyeWordCount extends TableFunction<Tuple2<String,Integer>> {
        private String[] keys;
        public KyeWordCount(String[] keys){
            this.keys=keys;
        }
        public void eval(String in){
            for (String key:keys){
                if (in.contains(key)){
                    collect(new Tuple2<String, Integer>(key,1));
                }
            }
        }
    }
    

    实现关键字过滤统计:

    public class UdtfJob {
        public static void main(String[] args) throws Exception {
            StreamExecutionEnvironment streamEnv = StreamExecutionEnvironment.getExecutionEnvironment();
            EnvironmentSettings streamSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build();
            StreamTableEnvironment streamTabelEnv = StreamTableEnvironment.create(streamEnv, streamSettings);
            KafkaTabelSource kafkaTabelSource = new KafkaTabelSource();
            streamTabelEnv.registerTableSource("kafkaDataStream", kafkaTabelSource);//使用自定义TableSource
            //注册自定义函数定义三个关键字:"KeyWord","WARNING","illegal"
            streamTabelEnv.registerFunction("CountKEY", new KyeWordCount(new String[]{"KeyWord","WARNING","illegal"}));
            //编写SQL
            Table wordWithCount = streamTabelEnv.sqlQuery("SELECT key,COUNT(countv) AS countsum FROM kafkaDataStream LEFT JOIN LATERAL TABLE(CountKEY(response)) as T(key, countv) ON TRUE GROUP BY key");
            //直接输出Retract流
            streamTabelEnv.toRetractStream(wordWithCount, Row.class).print();
            streamTabelEnv.execute("BLINK STREAMING QUERY");
        }
    }
    

    测试用Python脚本如下

    # https://pypi.org/project/kafka-python/
    import pickle
    import time
    import json
    from kafka import KafkaProducer
    
    producer = KafkaProducer(bootstrap_servers=['127.0.0.1:9092'],
                             key_serializer=lambda k: pickle.dumps(k),
                             value_serializer=lambda v: pickle.dumps(v))
    start_time = time.time()
    for i in range(0, 10000):
        print('------{}---------'.format(i))
        producer = KafkaProducer(value_serializer=lambda v: json.dumps(v).encode('utf-8'),compression_type='gzip')
        producer.send('test',{"response":"resKeyWordWARNINGillegal","status":0,"protocol":"protocol","timestamp":0})
        producer.send('test',{"response":"resKeyWordWARNINGillegal","status":1,"protocol":"protocol","timestamp":0})
        producer.send('test',{"response":"resresKeyWordWARNING","status":2,"protocol":"protocol","timestamp":0})
        producer.send('test',{"response":"resKeyWord","status":3,"protocol":"protocol","timestamp":0})
        producer.send('test',{"response":"res","status":4,"protocol":"protocol","timestamp":0})
        producer.send('test',{"response":"res","status":5,"protocol":"protocol","timestamp":0})
    #    future = producer.send('test', key='num', value=i, partition=0)
    # 将缓冲区的全部消息push到broker当中
    producer.flush()
    producer.close()
    
    end_time = time.time()
    time_counts = end_time - start_time
    print(time_counts)
    

    控制台输出:

    ...
    6> (false,KeyWord,157)
    3> (false,WARNING,119)
    3> (true,WARNING,120)
    6> (true,KeyWord,158)
    7> (true,illegal,80)
    6> (false,KeyWord,158)
    6> (true,KeyWord,159)
    6> (false,KeyWord,159)
    6> (true,KeyWord,160)
    ...
    

    自定义聚合函数

    自定义聚合函数(UDAGGs)将一个表聚合为一个标量值。

    在这里插入图片描述

    聚合函数适合用于累计的工作,上面的图显示了聚合的一个示例。假设您有一个包含饮料数据的表。该表由三列组成:id、name和price,共计5行。想象一下,你需要找到所有饮料的最高价格。执行max()聚合。您需要检查5行中的每一行,结果将是单个数值。

    用户定义的聚合函数是通过扩展AggregateFunction类来实现的。AggregateFunction的工作原理如下。首先,它需要一个累加器,这个累加器是保存聚合中间结果的数据结构。通过调用AggregateFunction的createAccumulator()方法来创建一个空的累加器。随后,对每个输入行调用该函数的accumulator()方法来更新累加器。处理完所有行之后,将调用函数的getValue()方法来计算并返回最终结果。

    **每个AggregateFunction必须使用以下方法: **

    • createAccumulator()创建一个空的累加器
    • accumulate()更新累加器
    • getValue()计算并返回最终结果

    除了上述方法之外,还有一些可选方法。虽然其中一些方法允许系统更有效地执行查询,但是对于某些用例是必需的。例如,如果应该在会话组窗口的上下文中应用聚合函数,那么merge()方法是必需的(当观察到连接它们的行时,需要连接两个会话窗口的累加器。

    AggregateFunction可选方法

    • retract() 定义restract:减少Accumulator ,对于在有界窗口上的聚合是必需的。
    • merge() merge多个Accumulator , 对于许多批处理聚合和会话窗口聚合都是必需的。
    • resetAccumulator() 重置Accumulator ,对于许多批处理聚合都是必需的。
    使用聚合函数聚合最大的status值

    编写自定义聚合函数,用于聚合出最大的status

    public class MaxStatus extends AggregateFunction<Integer,MaxStatus.StatusACC> {
        @Override
        public Integer getValue(StatusACC statusACC) {
            return statusACC.maxStatus;
        }
    
        @Override
        public StatusACC createAccumulator() {
            return new StatusACC();
        }
        public void accumulate(StatusACC statusACC,int status){
            if (status>statusACC.maxStatus){
                statusACC.maxStatus=status;
            }
        }
        public static class StatusACC{
            public int maxStatus=0;
        }
    }
    

    mian函数修改注册和SQL就可以使用

    /**
     *聚合最大的status
     */
    streamTabelEnv.registerFunction("maxStatus",new MaxStatus());
    Table wordWithCount = streamTabelEnv.sqlQuery("SELECT maxStatus(status) AS maxStatus FROM kafkaDataStream");
    

    使用之前的python脚本测试

    控制台输出(全部):

    5> (false,1)
    8> (true,3)
    3> (false,0)
    4> (true,1)
    6> (true,2)
    2> (true,0)
    2> (true,4)
    1> (false,3)
    7> (false,2)
    3> (false,4)
    4> (true,5)
    

    除非输入更大的Status,否则控制台不会继续输出新结果

    表聚合函数

    用户定义的表聚合函数(UDTAGGs)将一个表(具有一个或多个属性的一个或多个行)聚合到具有多行和多列的结果表。

    和聚合函数几乎一致,有需求的朋友可以参考官方文档

    Table Aggregation Functions

    GitHub

    项目源码已上传至GitHub

    https://github.com/StarPlatinumStudio/Flink-SQL-Practice

    我的专栏:Flink SQL原理和实战

    To Be Continue=>

    展开全文
  • throw和throws关键字 ...throw关键字也可以用在代码块中,但如果代码块中抛出的异常对象是由检查时异常创建的,则必须使用try-catch进行处理; 使用throw抛出异常对象如果没有try-catch捕获该异常对象,...
  • 大家都清楚在js中函数本身是一个对象,所以一般创建对象的方法为: var test = fucntion(arg1,arg2,arg3){ return arg1+arg2+arg3; }  上面是我们最常用的方法了,下面我说明一下用Function原始对象创建函数 ...
  • C#的Event关键字自定义事件总结

    千次阅读 2014-12-04 15:35:10
    1.event这个关键字会把一般的委托转换为具有...2.event关键字,限定了外界对委托变量只能使用+=或-=操作符,从而限定外界的非法赋值和调用 3.有event关键字标识的委托,一般情况下的返回值类型都是void(当前这非硬性规定)
  • MySQL自定义函数创建使用总结

    千次阅读 2019-11-21 13:30:06
    MySQL自定义函数创建使用总结 MySQL自定义函数和存储过程类似,也需要在数据库中创建并保存。它与存储过程一样,都是由SQL语句和控制语句组成的代码片段,可以被应用程序和其他SQL语句调用。 MySQL自定义函数与...
  • Hive创建自定义函数报错:FAILED: SemanticException Temporary function cannot be created with a qualified name hive创建临时自定义函数报错: hive (default)> create temporary function banzhang.addFive ...
  • Python基础:自定义函数及函数基本使用

    千次阅读 多人点赞 2019-02-04 00:09:34
    文章目录自定义函数及函数基本使用语法函数的调用与注释及小知识点函数的参数必须参数关键字参数默认参数混合使用递归 自定义函数及函数基本使用 函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建...
  • (作者:陈玓玏) 一、PLS-00103 一般出现这个错误,基本上可以确定是你的语法错误,或者是有中文的输入。...查看问题在什么位置,然后检查是否关键字用错了,把所有空格或符号删掉重新用英文格式输一遍。 二、PLS...
  • Mysql的基本函数--与自定义函数

    万次阅读 多人点赞 2019-02-25 18:23:40
    什么是Mysql函数: 类似于java的方法将一组逻辑语句封装在方法体 对外暴露方法名 事先提供好的一些功能可以直接使用 函数可以用在select 语句及其子句...6) 自定义函数 7) 其他函数 字符串函数: concat(s1,s2…sn...
  • 如果要建立基于用户自定义函数的索引。那么就需要在函数里加上关键字“deterministic”。但是用户仍然可以在今后需要时修改函数。 但是并不会造成索引失效。经试验发现了一个有趣的现象,总结如下:create function ...
  • SQL server 自定义函数FUNCTION的使用

    万次阅读 多人点赞 2018-08-16 15:33:25
     在SQL server中不仅可以可以使用系统自带的函数(时间函数、聚合函数、字符串函数等等),还可以根据需要自定义函数。 一、定义: 用户自定义函数的类型: 1、标量值函数(返回一个标量值) 2、表格值函数...
  • python自定义函数

    千次阅读 2018-06-01 16:33:57
    也可以创建用户自定义函数。 函数定义 函数定义的简单规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须放在圆括号中间 函数内容以冒号起始,并且缩进 若有返回值...
  • // 创建函数的语法,注意:参数和返回值一定要写长度,避免使用关键字 create function 函数名([形参列表]) returns 数据类型 begin -- 函数体 -- 返回值 end // 函数实例 create function ym_date(mydate ...
  • FlinkSQL如何使用自定义函数

    千次阅读 2020-05-20 10:11:34
    使用Flink自定义函数前首先要明白,如何自定义函数: 关于自定义函数,请参考:Flink自定义函数的介绍与使用 以下是worldCount tableAPI的方式作为的Demo演示: import lombok.AllArgsConstructor; import lombok....
  • 但你也可以自己创建函数,这被叫做用户自定义函数。定义一个函数可以定义一个由自己想要功能的函数,以下是简单的规则:1.函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。2.任何传入参数和自变量必须...
  • MySQL自定义函数

    2019-06-19 12:03:28
    文章目录MySQL自定义函数创建使用自定义函数查找函数修改自定义函数删除自定义函数 自定义函数是一种与存储过程十分相似的过程式数据库对象。它与存储过程一样,都是由 SQL 语句和过程式语句组成的代码片段,并且...
  • 创建一个包通过一个包,您可以将自定义关键字分组到特定类别,从而使关键字更易于搜索和使用。1. 从主菜单中选择“ 文件”&gt;“新建”&gt;“包”以打开“ 新建关键字包” 对话框。输入包的名称,然后...
  • MySql自定义函数的定义和使用

    千次阅读 2018-07-10 16:59:00
    在MySQL中使用自定义函数也需要相应的要求,语法如下, 创建新函数: Create function function_name(参数列表) returns返回值类型 函数体内容函数名:应该合法的标识符,并且不应该与已有的关键字冲突。...
  • 关于JavaScript自定义函数使用

    千次阅读 2019-01-21 14:09:51
    在JavaScript中,自定义函数关键字function,函数名,一组参数以及括号中的待执行的JavaScript语句组成 语法格式为: function 函数名(参数1,参数2,。。。。。){ //JavaScript语句 【return 返回值】 } ...
  • Python-自定义函数

    2019-07-31 16:42:24
    Python自定义函数定义函数 定义函数 使用def定义函数
  • Hive自定义函数与transform的区别和使用例子 hive是给了我们很多内置函数的,比如转大小写,截取字符串等,具体的都在官方文档里面。但是并不是所有的函数都能满足我们的需求,所以hive提供了给我们自定义函数的...
  •  在MySQL中使用自定义函数也需要相应的要求,语法如下,  创建新函数:  Create function function_name(参数列表)  returns返回值类型  函数体内容  相关说明, 函数名:应该合法的标识符,并且不应该...
  • Python 自定义函数

    2017-12-21 09:25:55
    函数是组织好的,可重复使用的,用来...但你也可以自己创建函数,这被叫做用户自定义函数自定义函数: def 函数名(参数): #def定义函数的关键字,函数名取名规则和变量相同,可以由字母,数字,下划线,但是必须由 函数体
  • SQL Function 自定义函数

    千次阅读 2017-06-19 14:00:46
    产生背景(已经有了存储过程,为什么还要使用自定义函数) 发展历史 构成 使用方法 适用范围 注意事项 疑问   内容 产生背景(已经有了存储过程,为什么还要使用自定义函数) 与存储过程的区别(存在的...
  • MySQL自定义函数与存储过程

    千次阅读 2017-04-11 11:22:58
    一、 Mysql 自定义函数 自定义函数 (user-defined function UDF)是一种对mysql扩展的途径,其用法和内置函数相同。 自定义函数的两个必要条件:1、参数(不是必有的,例如select version...创建自定义函数语法:  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 167,600
精华内容 67,040
关键字:

使用关键字创建自定义函数